@espressif/dashboard-ui-components 1.2.1 → 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/CHANGELOG.md +154 -0
- package/README.md +15 -6
- package/dist/{app-logo.props-TKCDuodn.d.ts → app-logo.props-Ct7QBdTd.d.ts} +1 -1
- package/dist/{chunk-F5P6S7K2.js → chunk-7BO76CNB.js} +75 -14
- package/dist/{chunk-JPMN2UMF.js → chunk-KCMVLNM5.js} +12 -12
- package/dist/{chunk-KEMHD3KP.js → chunk-O5BFYRPY.js} +1578 -360
- package/dist/{chunk-W2L5GRI2.js → chunk-RCRU3JW2.js} +42 -29
- package/dist/{chunk-NHTMHKOR.js → chunk-RKAFXJRD.js} +3 -3
- package/dist/{chunk-SYEKNRS5.js → chunk-TSNA6BHK.js} +30 -8
- package/dist/{chunk-34PXJOCS.js → chunk-UHRNPXO5.js} +423 -230
- package/dist/common/index.d.ts +4 -4
- package/dist/common/index.js +6 -6
- package/dist/components/index.d.ts +206 -13
- package/dist/components/index.js +4 -4
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/{index-Cv9vHALn.d.ts → index-BQANnKs9.d.ts} +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +7 -7
- package/dist/layouts/index.d.ts +27 -7
- package/dist/layouts/index.js +4 -4
- package/dist/{list.props-DBDJt4C1.d.ts → list.props-x1j3CbcF.d.ts} +1 -1
- package/dist/{popover-CRznb4Q7.d.ts → popover-ByLD3-Qv.d.ts} +21 -3
- package/dist/{types-B_tam56l.d.ts → types-DtUxK-Am.d.ts} +13 -2
- package/dist/utils/index.d.ts +1 -1
- package/package.json +4 -1
- package/src/assets/logos/launchpad/launchpad-no-text-dm.svg +1 -0
- package/src/assets/logos/launchpad/launchpad-no-text.svg +1 -1
- package/src/assets/logos/launchpad/launchpad-with-text-dm.svg +1 -1
- package/src/assets/logos/launchpad/launchpad-with-text.svg +46 -1
- package/src/assets/logos/zerocode-ai/zerocode-ai-no-text.svg +1 -0
- package/src/assets/logos/zerocode-ai/zerocode-ai-with-text-dm.svg +186 -0
- package/src/assets/logos/zerocode-ai/zerocode-ai-with-text.svg +246 -0
- package/src/styles/globals.css +93 -15
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,160 @@ All notable changes to this project are documented here. The format is based on
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
|
|
5
5
|
to [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [1.3.0] - 2026-09-10
|
|
8
|
+
|
|
9
|
+
A minor release that adds three new components (`NavBar`, `FileInput`,
|
|
10
|
+
`FlashButton`), extends `Separator`, `Link`, `EntryLayout` and `InvertButton`,
|
|
11
|
+
and **renames the `LinkComponent` prop to `linkComponent`** on `Sidebar`,
|
|
12
|
+
`WorkspaceLayout` and `PageContainer` (and `Icon` to `icon` on `StatusBadge`).
|
|
13
|
+
The renames are source-incompatible — see *Changed* for the migration.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **`NavBar`** — new component. A horizontal top navigation bar for
|
|
17
|
+
marketing-style and single-shell apps, as the counterpart to `Sidebar`.
|
|
18
|
+
Items are supplied as `items` (`NavBarMenuItem[]`: `id`, `label`, optional
|
|
19
|
+
`href` / `onClick` / `icon` / `disabled`, and optional `details`); an item
|
|
20
|
+
with `href` renders as a link through `linkComponent` (or a plain `<a>`),
|
|
21
|
+
otherwise as a `<button>`. `logo` and `rightContent` fill the left and right
|
|
22
|
+
slots. Active state is controlled (`activeId` + `onActiveChange`) or
|
|
23
|
+
uncontrolled (`defaultActiveId`). An item with `details` opens a full-width
|
|
24
|
+
dropdown panel below the bar — controlled via `openDetailsId` /
|
|
25
|
+
`onDetailsPanelChange`, closed on Escape or click-outside. Items that do not
|
|
26
|
+
fit are measured and collapsed into a "More" dropdown (`moreLabel`, default
|
|
27
|
+
`"More"`); below the `lg` breakpoint the whole menu moves into a `Sheet`
|
|
28
|
+
(`mobileMenuTitle`, `mobileMenuTrigger`). `position` selects `sticky`
|
|
29
|
+
(default) / `fixed` / `static`, and `height` defaults to the new
|
|
30
|
+
`--espd-navbar-height` token. `morphOnScroll` animates the bar from
|
|
31
|
+
full-width into a floating rounded pill past `morphScrollThreshold` px
|
|
32
|
+
(default `50`), reading `window.scrollY` or the element in
|
|
33
|
+
`morphScrollContainer`; it is disabled on mobile. `color` accents the active
|
|
34
|
+
item and panel highlights (preset token or arbitrary CSS color, default
|
|
35
|
+
`"primary"`), with `className` / `itemsClassName` as style hooks. Rows are
|
|
36
|
+
marked up as a `menubar` with `menuitem` children. Exports: `NavBar`,
|
|
37
|
+
`NavBarProps`, `NavBarMenuItem`, `NavBarPosition`. No new dependencies.
|
|
38
|
+
- **`FileInput`** — new component. A compact, single-line file picker: a
|
|
39
|
+
read-only display area showing the selected file name (plus an "and N more"
|
|
40
|
+
suffix for multi-select) with a browse/change button and a clear button —
|
|
41
|
+
for forms where the large drop target of `FileUpload` is too heavy. Wraps a
|
|
42
|
+
hidden `<input type="file">`, so `accept`, `multiple` and `name` behave
|
|
43
|
+
natively and native form submission still works. Controlled via `files` +
|
|
44
|
+
`onFilesChange`, or uncontrolled; `onChange` also fires with a synthetic
|
|
45
|
+
event whose `target.files` reflects the current list, so
|
|
46
|
+
`react-hook-form`'s `register()` works unchanged. Composes with the standard
|
|
47
|
+
input shell (`label`, `required`, `size`, `rounded`, `color`, `startIcon`,
|
|
48
|
+
`disabled`, `readOnly`, `startHelperContent` / `endHelperContent`,
|
|
49
|
+
`hintContent`, `error` / `errorContent`). Every string is overridable for
|
|
50
|
+
i18n: `browseLabel`, `changeLabel`, `clearLabel`, `placeholder` and
|
|
51
|
+
`andMoreLabel(remaining)`. Exports: `FileInput`, `FileInputProps`. No new
|
|
52
|
+
dependencies.
|
|
53
|
+
- **`FlashButton`** — new component, alongside `InvertButton`. A pill button
|
|
54
|
+
whose fill inverts to `bg-background` on hover while the original color
|
|
55
|
+
blinks back over it at randomised opacity and interval, so no two hovers
|
|
56
|
+
look alike. `label` and an optional `icon` (default `ZapIcon`), with
|
|
57
|
+
`iconPosition` (`"start"` / `"end"`, default `"end"`) and `hideIcon` for a
|
|
58
|
+
label-only chip; `size` and `color` (any `PresetColor`, default `"primary"`)
|
|
59
|
+
match the rest of the button family. Exports: `FlashButton`,
|
|
60
|
+
`FlashButtonProps`. Uses the already-bundled `motion` dependency.
|
|
61
|
+
- `Separator`: `label` renders text between two rules instead of a single
|
|
62
|
+
line — the "OR" divider every auth form hand-rolls. `stackLabel` stacks the
|
|
63
|
+
characters upright for vertical separators, and `labelClassName` overrides
|
|
64
|
+
the label typography. Without `label` the component is byte-for-byte the
|
|
65
|
+
previous single-line Radix separator. The labelled form is a `div` with
|
|
66
|
+
`role="separator"` (Radix `Separator.Root` cannot host children).
|
|
67
|
+
`SeparatorProps` is now exported.
|
|
68
|
+
- `Link`: `variant` — `"ghost"` strips the padding, fixed height and hover
|
|
69
|
+
background that `color` applies, leaving a bare inline anchor that still
|
|
70
|
+
picks up the color token. Default `"default"` keeps the existing pill
|
|
71
|
+
styling. `LinkVariant` is now exported.
|
|
72
|
+
- `EntryLayout`: five new props for entry pages that are not the default
|
|
73
|
+
split-screen — `customRightPanel` (arbitrary content in the right panel,
|
|
74
|
+
overriding `heading` and layered over the background image),
|
|
75
|
+
`disableBackgroundImage` (drops the shipped default background; ignored when
|
|
76
|
+
`backgroundImageUrl` is passed), `hideLogo`, `hideFooter`, and
|
|
77
|
+
`hideRightPanel` (the left panel keeps its 40 % width and centres on
|
|
78
|
+
screen).
|
|
79
|
+
- `InvertButton`: `color` (any `PresetColor`, default `"primary"`) now drives
|
|
80
|
+
the resting fill, the icon's resting/hover colors and the dark-mode hover
|
|
81
|
+
border, and `size` is threaded through to the icon disc. Previously the
|
|
82
|
+
effect was hard-coded to `primary`.
|
|
83
|
+
- `AppLogo`: new `zerocode-ai` preset (light/dark × full/minimal), also
|
|
84
|
+
selectable as `WorkspaceLayout` / `EntryLayout` `appName`.
|
|
85
|
+
- New `--espd-navbar-height` layout token (`4rem`), the default `NavBar`
|
|
86
|
+
height. Override it in `:root` like the other `--espd-*` dimensions.
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
- **BREAKING:** the router-adapter prop is now `linkComponent` (lower-case
|
|
90
|
+
first letter) everywhere, matching the casing already used by `List`,
|
|
91
|
+
`MarkdownContent` and `NavBar`. Renamed on `Sidebar` (`linkComponent`),
|
|
92
|
+
`WorkspaceLayout` (`sidebarConfig.linkComponent`) and `PageContainer`
|
|
93
|
+
(`goBackLinkData.linkComponent`). The old `LinkComponent` spelling is gone
|
|
94
|
+
rather than deprecated: since it is a required prop on `Sidebar` /
|
|
95
|
+
`sidebarConfig`, TypeScript flags every call site. Migration is a rename —
|
|
96
|
+
`sidebarConfig={{ …, LinkComponent: Link }}` becomes
|
|
97
|
+
`sidebarConfig={{ …, linkComponent: Link }}`.
|
|
98
|
+
- **BREAKING:** `StatusBadge`'s `Icon` prop is renamed to `icon`, for the same
|
|
99
|
+
reason. It stays a `LucideIcon` (a component reference, not an element), so
|
|
100
|
+
`<StatusBadge Icon={CheckIcon} …>` becomes
|
|
101
|
+
`<StatusBadge icon={CheckIcon} …>`.
|
|
102
|
+
- `StatusBadge`: a chip with no icon and no `isLoading` is now padded
|
|
103
|
+
symmetrically. The asymmetric padding (a tight leading edge sized for the
|
|
104
|
+
icon disc) previously applied even when there was no icon, leaving
|
|
105
|
+
label-only chips visually off-centre.
|
|
106
|
+
- `solid` variants no longer set `border-none`; they carry a transparent
|
|
107
|
+
1px border instead. Every variant of a given component now reserves the
|
|
108
|
+
same border box, so a solid item sitting next to an outline one lines up
|
|
109
|
+
instead of being 2px smaller. Affects every consumer of the shared variant
|
|
110
|
+
table (`Alert`, `Badge`, the card components, …). Visually identical on its
|
|
111
|
+
own; the outer box grows by 1px per side, which can shift a tightly
|
|
112
|
+
hand-tuned layout.
|
|
113
|
+
- `AppLogo`: the `launchpad` preset ships redrawn artwork with corrected
|
|
114
|
+
intrinsic dimensions, and gains a dedicated dark-mode minimal asset
|
|
115
|
+
(previously the light minimal mark was reused in dark mode).
|
|
116
|
+
- Browser autofill styling: autofilled `input` / `textarea` fields now match
|
|
117
|
+
the surrounding theme in both modes instead of Chrome's yellow (or, in dark
|
|
118
|
+
mode, an unreadable dark-on-dark). Implemented with
|
|
119
|
+
`-webkit-box-shadow` / `-webkit-text-fill-color` overrides in the library's
|
|
120
|
+
global stylesheet.
|
|
121
|
+
|
|
122
|
+
### Internal
|
|
123
|
+
Nothing in this section affects the published package.
|
|
124
|
+
|
|
125
|
+
- ESLint added as a dev dependency (`eslint` 10.10.0, `typescript-eslint`
|
|
126
|
+
8.70.0) with an `npm run lint` script; the one stale
|
|
127
|
+
`react-hooks/exhaustive-deps` suppression in `Carousel` is now unnecessary
|
|
128
|
+
and was removed.
|
|
129
|
+
- Demo: new pages for `NavBar`, `FileInput` and `FlashButton`; the `Link`,
|
|
130
|
+
`Separator`, `InvertButton`, `AppLogo`, `PageContainer`, `StatusBadge` and
|
|
131
|
+
layout pages were extended for the props above.
|
|
132
|
+
|
|
133
|
+
## [1.2.2] - 2026-09-02
|
|
134
|
+
|
|
135
|
+
A patch release with layout and component refinements. No breaking changes.
|
|
136
|
+
|
|
137
|
+
### Added
|
|
138
|
+
- `Sidebar`: `focusActiveGroup` prop — when enabled, only the group containing
|
|
139
|
+
the current route is expanded; other groups collapse automatically whenever
|
|
140
|
+
the active group changes. Users can still expand other groups manually, and
|
|
141
|
+
those manual expansions persist until the active group changes. Useful for
|
|
142
|
+
sidebars with many groups where a fully-expanded tree is noisy. Default
|
|
143
|
+
`false`. Also exposed on `WorkspaceLayout` via
|
|
144
|
+
`sidebarConfig.focusActiveGroup`.
|
|
145
|
+
- `InputOTP`: `expand` prop — when `true`, slots stretch to fill the parent
|
|
146
|
+
width, dividing space equally across groups (each group's `flex-grow` is
|
|
147
|
+
weighted by its slot count so all slots end up the same width). When `false`
|
|
148
|
+
(default), slots use the existing fixed size based on `size`.
|
|
149
|
+
|
|
150
|
+
### Changed
|
|
151
|
+
- `PageContainer`: the sticky heading strip now uses a translucent background
|
|
152
|
+
with a backdrop blur (`bg-background/75 backdrop-blur-xs`) instead of a solid
|
|
153
|
+
`bg-background`, so content scrolling underneath is subtly visible.
|
|
154
|
+
- `EntryLayout`: reworked scroll behaviour — the outer container is now
|
|
155
|
+
`h-screen overflow-hidden` and the left panel scrolls internally, so the
|
|
156
|
+
background image stays viewport-locked on long forms. The logo is sticky at
|
|
157
|
+
the top of the scroll area with the same translucent backdrop-blur treatment
|
|
158
|
+
as `PageContainer`, and the footer sits at the bottom of the scrollable
|
|
159
|
+
content instead of being pinned to the viewport edge.
|
|
160
|
+
|
|
7
161
|
## [1.2.1] - 2026-08-27
|
|
8
162
|
|
|
9
163
|
A patch release that adds one new component (`StatusBadge`). No breaking
|
package/README.md
CHANGED
|
@@ -185,7 +185,7 @@ All tokens live in the library's [`src/styles/colors.css`](./src/styles/colors.c
|
|
|
185
185
|
**Charts** — `--color-chart-1` through `--color-chart-10`, plus `--color-chart-success`, `-error`, `-warning`, `-disabled`, `-gray`, `-primary`, `-secondary`
|
|
186
186
|
|
|
187
187
|
**Layout dimensions** (light and dark share the same value; override in `:root`):
|
|
188
|
-
`--espd-sidebar-width`, `--espd-sidebar-width-collapsed`, `--espd-sidebar-width-mobile`, `--espd-header-height`, `--espd-banner-height`, `--espd-footer-height`, `--espd-hidden-footer-height`, `--espd-sidebar-item-font-size`, `--espd-sidebar-flyout-group-label-font-size`
|
|
188
|
+
`--espd-sidebar-width`, `--espd-sidebar-width-collapsed`, `--espd-sidebar-width-mobile`, `--espd-header-height`, `--espd-navbar-height`, `--espd-banner-height`, `--espd-footer-height`, `--espd-hidden-footer-height`, `--espd-sidebar-item-font-size`, `--espd-sidebar-flyout-group-label-font-size`
|
|
189
189
|
|
|
190
190
|
**Typography and radius** — `--font-sans` (whole font stack; override in `@theme` to replace), `--radius-lg` (drives `-md` and `-sm`)
|
|
191
191
|
|
|
@@ -417,6 +417,11 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
|
|
|
417
417
|
|
|
418
418
|
## Available Components
|
|
419
419
|
|
|
420
|
+
The tables below are a human-readable overview, grouped by surface. They are not
|
|
421
|
+
exhaustive and they do not list props — the authoritative list of exports for the
|
|
422
|
+
version you have installed is the shipped type declarations:
|
|
423
|
+
`node_modules/@espressif/dashboard-ui-components/dist/<surface>/index.d.ts`.
|
|
424
|
+
|
|
420
425
|
### Components (`/components`)
|
|
421
426
|
|
|
422
427
|
| Component | Description |
|
|
@@ -425,27 +430,30 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
|
|
|
425
430
|
| Avatar | User avatar with image and fallback |
|
|
426
431
|
| List / ListGroup / ListItem | Structured list display; rows are buttons by default, or real links when an item sets `href` and `List` is given a `linkComponent` adapter. Styling hooks: `className` / `itemClassName` / `separatorClassName` / `ListGroup.labelClassName` / `ListItem.className`, plus the always-present classes in `LIST_CLASS_NAMES` (`.espd-list`, `.espd-list-group-label`, `.espd-list-item`, `.espd-list-custom-item`, `.espd-list-separator`) |
|
|
427
432
|
| Sidebar | Collapsible sidebar navigation |
|
|
433
|
+
| NavBar | Horizontal top navigation bar — overflow "More" dropdown, full-width details panels, mobile `Sheet` menu, and an optional scroll-driven morph into a floating pill |
|
|
428
434
|
| Menu | Context and action menus |
|
|
429
435
|
| Tooltip | Hover tooltips |
|
|
430
436
|
| Sheet | Slide-out panel |
|
|
431
437
|
| Dropdown Menu | Dropdown action menu |
|
|
432
438
|
| ScrollArea | Custom scrollable container |
|
|
433
439
|
| Form / Label / Checkbox | Form controls |
|
|
434
|
-
| Button / ButtonGroup | Standard and grouped buttons |
|
|
440
|
+
| Button / ButtonGroup / InvertButton / FlashButton | Standard and grouped buttons, plus the invert-on-hover and random-flash pill variants |
|
|
435
441
|
| Card | Content card container |
|
|
436
442
|
| Input / InputPassword / Textarea | Text input fields |
|
|
443
|
+
| InputOTP | One-time-code input — grouped slots, numeric or alphanumeric, custom regex |
|
|
444
|
+
| FileUpload / FileInput | Drop-target uploader, and a compact single-line file picker for forms |
|
|
437
445
|
| AsyncCombobox | Async searchable combobox |
|
|
438
446
|
| SearchBox / AdvancedSearchBox | Search inputs |
|
|
439
447
|
| Breadcrumb | Navigation breadcrumbs |
|
|
440
|
-
| Separator | Visual divider |
|
|
448
|
+
| Separator | Visual divider, optionally with a centred `label` ("OR" dividers) |
|
|
441
449
|
| Skeleton / TableSkeleton | Loading placeholders |
|
|
442
450
|
| Table / DataTable | Data tables with sorting and pagination |
|
|
443
451
|
| Tabs | Tabbed content panels |
|
|
444
452
|
| Dialog / ConfirmationDialog / FullscreenDialog | Modal dialogs |
|
|
445
453
|
| Pagination | Page navigation controls |
|
|
446
|
-
| Badge | Status and label badges |
|
|
454
|
+
| Badge / StatusBadge | Status and label badges; `StatusBadge` is the icon-plus-label status chip, with a loading spinner state |
|
|
447
455
|
| Alert | Alert banners (optionally dismissible) |
|
|
448
|
-
| Link | Styled anchor element |
|
|
456
|
+
| Link | Styled anchor element — colour-tinted pill, or `variant="ghost"` for a bare inline link |
|
|
449
457
|
| Code | Syntax-highlighted code blocks |
|
|
450
458
|
| MarkdownContent | Renders a markdown string with library primitives (GFM, heading anchors; raw HTML is escaped, not parsed) |
|
|
451
459
|
| CopiableText / CopyButton | Copy-to-clipboard utilities |
|
|
@@ -453,6 +461,7 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
|
|
|
453
461
|
| Collapsible / CollapsibleCard | Expandable content sections |
|
|
454
462
|
| SimpleCard / BasicDetailsCard / NoDataCard | Specialized card variants |
|
|
455
463
|
| PreviewCard | Content preview card |
|
|
464
|
+
| Carousel | Slide carousel — horizontal/vertical, dots, arrows or custom navigation, optional autoplay |
|
|
456
465
|
| PageContainer | Page wrapper with header |
|
|
457
466
|
| DynamicList | Dynamic item list |
|
|
458
467
|
| RequirementList | Met/unmet checklist (password rules, prerequisites); check for satisfied rows, muted circle for outstanding ones, with screen-reader state labels |
|
|
@@ -466,7 +475,7 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
|
|
|
466
475
|
| Component | Description |
|
|
467
476
|
|-----------|-------------|
|
|
468
477
|
| WorkspaceLayout | Full dashboard shell with sidebar, header, and footer |
|
|
469
|
-
| EntryLayout | Authentication and entry page layout |
|
|
478
|
+
| EntryLayout | Authentication and entry page layout — supports a custom right panel, and hiding the logo, footer, background image or right panel entirely |
|
|
470
479
|
|
|
471
480
|
### Common (`/common`)
|
|
472
481
|
|
|
@@ -190,22 +190,83 @@ function useIsMobile() {
|
|
|
190
190
|
return !!isMobile;
|
|
191
191
|
}
|
|
192
192
|
var Separator = React9.forwardRef(
|
|
193
|
-
({
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
193
|
+
({
|
|
194
|
+
className,
|
|
195
|
+
orientation = "horizontal",
|
|
196
|
+
decorative = true,
|
|
197
|
+
label,
|
|
198
|
+
stackLabel = false,
|
|
199
|
+
labelClassName,
|
|
200
|
+
...props
|
|
201
|
+
}, ref) => {
|
|
202
|
+
if (!label) {
|
|
203
|
+
return /* @__PURE__ */ jsx(
|
|
204
|
+
SeparatorPrimitive.Root,
|
|
205
|
+
{
|
|
206
|
+
ref,
|
|
207
|
+
decorative,
|
|
208
|
+
orientation,
|
|
209
|
+
className: cn(
|
|
210
|
+
"shrink-0 bg-border",
|
|
211
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
212
|
+
className
|
|
213
|
+
),
|
|
214
|
+
...props
|
|
215
|
+
}
|
|
216
|
+
);
|
|
205
217
|
}
|
|
206
|
-
|
|
218
|
+
const isHorizontal = orientation === "horizontal";
|
|
219
|
+
return /* @__PURE__ */ jsxs(
|
|
220
|
+
"div",
|
|
221
|
+
{
|
|
222
|
+
ref,
|
|
223
|
+
role: "separator",
|
|
224
|
+
"aria-orientation": orientation,
|
|
225
|
+
"data-orientation": orientation,
|
|
226
|
+
className: cn(
|
|
227
|
+
"flex items-center gap-3",
|
|
228
|
+
isHorizontal ? "w-full" : "flex-col h-full",
|
|
229
|
+
className
|
|
230
|
+
),
|
|
231
|
+
...props,
|
|
232
|
+
children: [
|
|
233
|
+
/* @__PURE__ */ jsx(
|
|
234
|
+
"div",
|
|
235
|
+
{
|
|
236
|
+
"aria-hidden": "true",
|
|
237
|
+
className: cn(
|
|
238
|
+
"shrink-0 bg-border flex-1",
|
|
239
|
+
isHorizontal ? "h-[1px]" : "w-[1px]"
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
),
|
|
243
|
+
/* @__PURE__ */ jsx(
|
|
244
|
+
"span",
|
|
245
|
+
{
|
|
246
|
+
className: cn(
|
|
247
|
+
"text-xs font-medium text-muted-foreground shrink-0 select-none",
|
|
248
|
+
!isHorizontal && stackLabel && "[writing-mode:vertical-lr] [text-orientation:upright]",
|
|
249
|
+
labelClassName
|
|
250
|
+
),
|
|
251
|
+
children: label
|
|
252
|
+
}
|
|
253
|
+
),
|
|
254
|
+
/* @__PURE__ */ jsx(
|
|
255
|
+
"div",
|
|
256
|
+
{
|
|
257
|
+
"aria-hidden": "true",
|
|
258
|
+
className: cn(
|
|
259
|
+
"shrink-0 bg-border flex-1",
|
|
260
|
+
isHorizontal ? "h-[1px]" : "w-[1px]"
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
)
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
);
|
|
267
|
+
}
|
|
207
268
|
);
|
|
208
|
-
Separator.displayName =
|
|
269
|
+
Separator.displayName = "Separator";
|
|
209
270
|
function Skeleton({
|
|
210
271
|
className,
|
|
211
272
|
...props
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Separator } from './chunk-
|
|
1
|
+
import { Separator } from './chunk-7BO76CNB.js';
|
|
2
2
|
import { cn, isPresetColor, resolveColor } from './chunk-VU4CZ76T.js';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import * as React from 'react';
|
|
@@ -129,7 +129,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
129
129
|
description: "text-primary/80"
|
|
130
130
|
},
|
|
131
131
|
solid: {
|
|
132
|
-
container: "border-
|
|
132
|
+
container: "border border-transparent bg-primary text-primary-foreground [&>svg]:text-primary-foreground",
|
|
133
133
|
foreground: "text-primary-foreground",
|
|
134
134
|
description: "text-primary-foreground/80"
|
|
135
135
|
},
|
|
@@ -151,7 +151,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
151
151
|
description: "text-secondary/80"
|
|
152
152
|
},
|
|
153
153
|
solid: {
|
|
154
|
-
container: "border-
|
|
154
|
+
container: "border border-transparent bg-secondary text-secondary-foreground [&>svg]:text-secondary-foreground",
|
|
155
155
|
foreground: "text-secondary-foreground",
|
|
156
156
|
description: "text-secondary-foreground/80"
|
|
157
157
|
},
|
|
@@ -173,7 +173,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
173
173
|
description: "text-info/80"
|
|
174
174
|
},
|
|
175
175
|
solid: {
|
|
176
|
-
container: "border-
|
|
176
|
+
container: "border border-transparent bg-info text-info-foreground [&>svg]:text-info-foreground",
|
|
177
177
|
foreground: "text-info-foreground",
|
|
178
178
|
description: "text-info-foreground/80"
|
|
179
179
|
},
|
|
@@ -195,7 +195,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
195
195
|
description: "text-warning"
|
|
196
196
|
},
|
|
197
197
|
solid: {
|
|
198
|
-
container: "border-
|
|
198
|
+
container: "border border-transparent bg-warning text-warning-foreground [&>svg]:text-warning-foreground",
|
|
199
199
|
foreground: "text-warning-foreground",
|
|
200
200
|
description: "text-warning-foreground/80"
|
|
201
201
|
},
|
|
@@ -217,7 +217,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
217
217
|
description: "text-error/80"
|
|
218
218
|
},
|
|
219
219
|
solid: {
|
|
220
|
-
container: "border-
|
|
220
|
+
container: "border border-transparent bg-error text-error-foreground [&>svg]:text-error-foreground",
|
|
221
221
|
foreground: "text-error-foreground",
|
|
222
222
|
description: "text-error-foreground/80"
|
|
223
223
|
},
|
|
@@ -239,7 +239,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
239
239
|
description: "text-success/80"
|
|
240
240
|
},
|
|
241
241
|
solid: {
|
|
242
|
-
container: "border-
|
|
242
|
+
container: "border border-transparent bg-success text-success-foreground [&>svg]:text-success-foreground",
|
|
243
243
|
foreground: "text-success-foreground",
|
|
244
244
|
description: "text-success-foreground/80"
|
|
245
245
|
},
|
|
@@ -261,7 +261,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
261
261
|
description: "text-disabled/80"
|
|
262
262
|
},
|
|
263
263
|
solid: {
|
|
264
|
-
container: "border-
|
|
264
|
+
container: "border border-transparent bg-disabled text-disabled-foreground [&>svg]:text-disabled-foreground",
|
|
265
265
|
foreground: "text-disabled-foreground",
|
|
266
266
|
description: "text-disabled-foreground/80"
|
|
267
267
|
},
|
|
@@ -283,7 +283,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
283
283
|
description: "text-gray/80"
|
|
284
284
|
},
|
|
285
285
|
solid: {
|
|
286
|
-
container: "border-
|
|
286
|
+
container: "border border-transparent bg-gray text-gray-foreground [&>svg]:text-gray-foreground",
|
|
287
287
|
foreground: "text-gray-foreground",
|
|
288
288
|
description: "text-gray-foreground/80"
|
|
289
289
|
},
|
|
@@ -305,7 +305,7 @@ var PRESET_VARIANT_STYLES = {
|
|
|
305
305
|
description: "text-mist-secondary"
|
|
306
306
|
},
|
|
307
307
|
solid: {
|
|
308
|
-
container: "border-
|
|
308
|
+
container: "border border-transparent bg-mist text-mist-foreground [&>svg]:text-mist-foreground",
|
|
309
309
|
foreground: "text-mist-foreground",
|
|
310
310
|
description: "text-mist-secondary"
|
|
311
311
|
},
|
|
@@ -330,7 +330,7 @@ var SILVER_VARIANT_ROWS = {
|
|
|
330
330
|
},
|
|
331
331
|
solid: {
|
|
332
332
|
/** Metallic surface gradient layered on top of `bg-gray` via `SILVER_SOLID_SURFACE_STYLE`. */
|
|
333
|
-
container: "border-
|
|
333
|
+
container: "border border-transparent bg-gray text-gray-foreground [&>svg]:text-gray-foreground",
|
|
334
334
|
foreground: "text-gray-foreground",
|
|
335
335
|
description: "text-gray-foreground/80"
|
|
336
336
|
},
|
|
@@ -377,7 +377,7 @@ function getArbitraryVariantStyles(variant, color) {
|
|
|
377
377
|
}
|
|
378
378
|
if (variant === "solid") {
|
|
379
379
|
return {
|
|
380
|
-
container: "border-
|
|
380
|
+
container: "border border-transparent text-white [&>svg]:text-white",
|
|
381
381
|
foreground: "text-white",
|
|
382
382
|
foregroundStyle: { color: "#fff" },
|
|
383
383
|
description: "text-white/80",
|