@stealthscale/component-media 0.1.0 → 0.2.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/dist/cyclonedx/bom.json +1 -1
- package/dist/index.d.ts +33 -33
- package/dist/index.js +1 -1889
- package/dist/pages/audio/audio.js +255 -0
- package/dist/pages/audio/audio.props.js +3 -0
- package/dist/pages/avatar/avatar.js +800 -0
- package/dist/pages/avatar/avatar.props.js +3 -0
- package/dist/pages/carousel/carousel.js +800 -0
- package/dist/pages/carousel/carousel.props.js +3 -0
- package/dist/pages/iframe/iframe.js +206 -0
- package/dist/pages/iframe/iframe.props.js +3 -0
- package/dist/pages/image-cropper/image-cropper.js +760 -0
- package/dist/pages/image-cropper/image-cropper.props.js +3 -0
- package/dist/pages/pages.json +74 -0
- package/dist/pages/video/video.js +269 -0
- package/dist/pages/video/video.props.js +3 -0
- package/dist/{recipe-m4bX2c06.js → recipes-CBo6SSP8.js} +7 -7
- package/dist/shared-DH0DrBx7.js +1890 -0
- package/dist/theme.js +1 -1
- package/locales/en/specimen/audio.json +22 -0
- package/locales/en/specimen/avatar.json +71 -0
- package/locales/en/specimen/carousel.json +74 -0
- package/locales/en/specimen/iframe.json +32 -0
- package/locales/en/specimen/image-cropper.json +43 -0
- package/locales/en/specimen/video.json +32 -0
- package/package.json +24 -23
package/dist/theme.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as recipe$5, c as recipe, n as recipe$6, o as recipe$1, r as recipe$2, s as recipe$4, t as recipe$3 } from "./
|
|
1
|
+
import { a as recipe$5, c as recipe, n as recipe$6, o as recipe$1, r as recipe$2, s as recipe$4, t as recipe$3 } from "./recipes-CBo6SSP8.js";
|
|
2
2
|
import { definePreset } from "@stealthscale/theme/authoring";
|
|
3
3
|
//#region src/theme.ts
|
|
4
4
|
/**
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "An `audio` element with the browser's controls, as wide as its container. The controls are on unless `controls={false}`, because sound that plays for more than 3 seconds needs a way to stop it (WCAG 1.4.2), and speech needs a transcript in the page beside the player (WCAG 1.2.1).",
|
|
3
|
+
"chime": {
|
|
4
|
+
"label": "Notification sound: Two notes",
|
|
5
|
+
"play": "Play sound",
|
|
6
|
+
"stop": "Stop sound"
|
|
7
|
+
},
|
|
8
|
+
"controlled": {
|
|
9
|
+
"about": "A notification sound a reader previews from a button. The element's controls are off, so the browser renders nothing for it, and the button calls `play()` and `pause()` through a ref. Its words follow the element's `play`, `pause` and `ended` events.",
|
|
10
|
+
"title": "Played from a button"
|
|
11
|
+
},
|
|
12
|
+
"memo": {
|
|
13
|
+
"title": "Voice memo from Ada, 13 seconds",
|
|
14
|
+
"transcript": "Transcript",
|
|
15
|
+
"words": "Hi, this is Ada from payments. The March payout to Northwind failed, because the bank rejected the account number. I have asked them to confirm it, and I will retry the payout on Monday."
|
|
16
|
+
},
|
|
17
|
+
"title": "Audio",
|
|
18
|
+
"transcribed": {
|
|
19
|
+
"about": "A voice memo on a support ticket, with the browser's controls and its transcript under a collapsible. The transcript states every word the memo says, so a reader who cannot hear it misses nothing. `preload=\"metadata\"` loads the memo's length and nothing else until the reader presses play.",
|
|
20
|
+
"title": "With a transcript"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "Shows a person or a thing as a picture, or as initials while the picture is missing, loading or broken. With a name the avatar is an image named by it, so a screen reader hears the name once.",
|
|
3
|
+
"ada": "Ada Okafor",
|
|
4
|
+
"badge": {
|
|
5
|
+
"palette": {
|
|
6
|
+
"about": "A badge takes its own palette, apart from the avatar's: the eight semantic palettes on a count.",
|
|
7
|
+
"title": "Badge palettes"
|
|
8
|
+
},
|
|
9
|
+
"placement": {
|
|
10
|
+
"about": "The four corners, in the direction of the text. The badge centres on the point where the avatar's diagonal crosses its rim, so half of it covers the picture.",
|
|
11
|
+
"title": "Badge corners"
|
|
12
|
+
},
|
|
13
|
+
"variant": {
|
|
14
|
+
"about": "The solid look fills the badge in the palette's solid. The subtle look fills it in the palette's subtle role, which suits an emoji.",
|
|
15
|
+
"title": "Badge looks"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"badges": {
|
|
19
|
+
"about": "Empty, a badge is a status dot. With a count, an emoji or an icon it grows around its content. Its label joins the avatar's description, so a screen reader hears it after the name.",
|
|
20
|
+
"title": "Badges"
|
|
21
|
+
},
|
|
22
|
+
"bram": "Bram Voss",
|
|
23
|
+
"byline": {
|
|
24
|
+
"about": "Beside the same name in words, the avatar is hidden from screen readers with `aria-hidden`, so the name is read once. The root is a `span`, so the avatar is placed in the line of text and centred on it. `2xs` is 24px, one line of body text.",
|
|
25
|
+
"title": "Beside a name"
|
|
26
|
+
},
|
|
27
|
+
"cleo": "Cleo Han",
|
|
28
|
+
"commented": "commented 2 hours ago",
|
|
29
|
+
"deployBot": "Deploy bot",
|
|
30
|
+
"devi": "Devi Rao",
|
|
31
|
+
"effect": {
|
|
32
|
+
"about": "A halo around the box, in the palette's solid at half opacity. `pulse` animates it, for a person who is speaking, and stops when the reader prefers reduced motion.",
|
|
33
|
+
"title": "Effects"
|
|
34
|
+
},
|
|
35
|
+
"holiday": "On holiday",
|
|
36
|
+
"more": "3 more",
|
|
37
|
+
"northwind": "Northwind",
|
|
38
|
+
"online": "Online",
|
|
39
|
+
"palette": {
|
|
40
|
+
"about": "Every palette in every look. The looks are flat, because an avatar is read and not pressed. The palette and the look color the initials and their box, and a loaded picture covers both.",
|
|
41
|
+
"title": "Palettes and looks"
|
|
42
|
+
},
|
|
43
|
+
"pictures": {
|
|
44
|
+
"about": "A picture covers the box once it loads. Until then, and after it fails, the initials show, so a slow or broken picture never leaves an empty box.",
|
|
45
|
+
"title": "Pictures and initials"
|
|
46
|
+
},
|
|
47
|
+
"presence": {
|
|
48
|
+
"about": "The dot is 28% of the avatar's side and never under 8px, so one dot fits a 24px avatar in a list and a 56px one on a profile.",
|
|
49
|
+
"title": "A status at every size"
|
|
50
|
+
},
|
|
51
|
+
"services": {
|
|
52
|
+
"about": "A service or a company takes a square or rounded box, and an icon in place of initials. The box keeps the name for a screen reader.",
|
|
53
|
+
"title": "Services and companies"
|
|
54
|
+
},
|
|
55
|
+
"shape": {
|
|
56
|
+
"about": "A circle for a person, and a rounded or square box for a company, a service or a bot.",
|
|
57
|
+
"title": "Shapes"
|
|
58
|
+
},
|
|
59
|
+
"size": {
|
|
60
|
+
"about": "The side is a control height, so an avatar is as tall as a button of its size: 32, 36, 40, 44, 48 and 56px. `2xs` is 24px, for a byline or a list row. The initials take the label style of the same size.",
|
|
61
|
+
"title": "Sizes"
|
|
62
|
+
},
|
|
63
|
+
"team": {
|
|
64
|
+
"about": "A group overlaps each avatar with the one before it by a quarter of its side and rings each in the panel's ground. The last avatar counts the people left out and is named for them.",
|
|
65
|
+
"title": "A team"
|
|
66
|
+
},
|
|
67
|
+
"title": "Avatar",
|
|
68
|
+
"unread": "3 unread messages",
|
|
69
|
+
"verified": "Verified",
|
|
70
|
+
"warehouse": "Warehouse service"
|
|
71
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "Shows slides a page at a time in a scroller that snaps: triggers move a page, dots pick one, and a rotation control starts and stops a carousel that plays by itself. Rotation stops when keyboard focus enters, pauses under the pointer and does not start by itself under reduced motion.",
|
|
3
|
+
"add": "Add to basket",
|
|
4
|
+
"cards": {
|
|
5
|
+
"about": "Two cards a page, one card a move, with `slidesPerPage` and `slidesPerMove`. A card out of view is inert, so its button leaves the tab order. The triggers are `aria-disabled` at the ends and keep focus.",
|
|
6
|
+
"title": "Two cards a page"
|
|
7
|
+
},
|
|
8
|
+
"cardsLabel": "Prints",
|
|
9
|
+
"chooser": "Choose a place",
|
|
10
|
+
"controlled": {
|
|
11
|
+
"about": "`page` and `onPageChange` keep the carousel and the segment group above it on the same picture.",
|
|
12
|
+
"title": "Controlled page"
|
|
13
|
+
},
|
|
14
|
+
"controlledLabel": "Places",
|
|
15
|
+
"controls": {
|
|
16
|
+
"about": "The controls beside the slides, or over them on `bg.panel` pills.",
|
|
17
|
+
"title": "Controls"
|
|
18
|
+
},
|
|
19
|
+
"gallery": {
|
|
20
|
+
"about": "Pictures with the triggers and the dots over them, looping, and draggable with the mouse. Focus the scroller or a dot and use the arrow keys, Home and End.",
|
|
21
|
+
"title": "Gallery"
|
|
22
|
+
},
|
|
23
|
+
"galleryLabel": "Landscapes",
|
|
24
|
+
"goTo": "Go to slide {{page}}",
|
|
25
|
+
"next": "Next slide",
|
|
26
|
+
"palette": {
|
|
27
|
+
"about": "The palette of the dots.",
|
|
28
|
+
"title": "Palettes"
|
|
29
|
+
},
|
|
30
|
+
"pictures": {
|
|
31
|
+
"dawn": "Purple mountains at dawn",
|
|
32
|
+
"dunes": "Orange dunes under a pale sky",
|
|
33
|
+
"harbour": "A harbour skyline at night",
|
|
34
|
+
"lake": "A lake below green hills",
|
|
35
|
+
"peaks": "Snowy peaks under a blue sky"
|
|
36
|
+
},
|
|
37
|
+
"places": {
|
|
38
|
+
"dawn": "Mountains",
|
|
39
|
+
"dunes": "Desert",
|
|
40
|
+
"lake": "Lake"
|
|
41
|
+
},
|
|
42
|
+
"previous": "Previous slide",
|
|
43
|
+
"price": "€24",
|
|
44
|
+
"prints": {
|
|
45
|
+
"dawn": "Dawn print",
|
|
46
|
+
"dunes": "Dunes print",
|
|
47
|
+
"harbour": "Harbour print",
|
|
48
|
+
"lake": "Lake print",
|
|
49
|
+
"peaks": "Peaks print"
|
|
50
|
+
},
|
|
51
|
+
"progress": "{{page}} / {{totalPages}}",
|
|
52
|
+
"radius": {
|
|
53
|
+
"about": "The slides' corners, from the tightest to the roundest.",
|
|
54
|
+
"title": "Corners"
|
|
55
|
+
},
|
|
56
|
+
"ratio": {
|
|
57
|
+
"about": "The scroller's aspect ratio. A picture that is a slide's child covers the slide.",
|
|
58
|
+
"title": "Ratios"
|
|
59
|
+
},
|
|
60
|
+
"rotation": {
|
|
61
|
+
"about": "`autoplay` rotates every 5 seconds. The rotation control comes first, keyboard focus entering the carousel stops the rotation, the pointer pauses it, and reduced motion keeps it still until the reader starts it.",
|
|
62
|
+
"title": "Rotation"
|
|
63
|
+
},
|
|
64
|
+
"rotationLabel": "Featured landscapes",
|
|
65
|
+
"slide": "{{index}} of {{count}}",
|
|
66
|
+
"start": "Start slide rotation",
|
|
67
|
+
"stop": "Stop slide rotation",
|
|
68
|
+
"title": "Carousel",
|
|
69
|
+
"vertical": {
|
|
70
|
+
"about": "`orientation=\"vertical\"`: the slides run top to bottom in a scroller of the `landscape` ratio, and the up and down keys move a page.",
|
|
71
|
+
"title": "Vertical"
|
|
72
|
+
},
|
|
73
|
+
"verticalLabel": "Landscapes, top to bottom"
|
|
74
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "An `iframe` for a document the application does not control, sandboxed by default: no scripts, no forms, no popups and no same-origin access. It sends no referrer, loads when the reader scrolls near it, and keeps one of the theme's ratios before its document loads. `title` names it for a screen reader.",
|
|
3
|
+
"email": {
|
|
4
|
+
"amount": "€1,240.00 due on 30 March",
|
|
5
|
+
"body": "Your invoice for March is ready. Pay it by bank transfer or with the card on file.",
|
|
6
|
+
"from": "Northwind Trading",
|
|
7
|
+
"heading": "Your March invoice",
|
|
8
|
+
"title": "Preview of the March invoice email"
|
|
9
|
+
},
|
|
10
|
+
"preview": {
|
|
11
|
+
"about": "A customer's email template in a frame that grants nothing. Its markup and inline styles render as they will in an inbox, and no script in it runs. `ratio=\"portrait\"` gives the preview a tall box.",
|
|
12
|
+
"title": "Email preview"
|
|
13
|
+
},
|
|
14
|
+
"radius": {
|
|
15
|
+
"about": "The corners of the frame, from the theme's corner tokens.",
|
|
16
|
+
"title": "Corners"
|
|
17
|
+
},
|
|
18
|
+
"ratio": {
|
|
19
|
+
"about": "The shape the frame keeps before and after its document loads, from the theme's seven ratios, so nothing below it moves when the document arrives. A document taller than its frame scrolls inside it.",
|
|
20
|
+
"title": "Ratios"
|
|
21
|
+
},
|
|
22
|
+
"scripted": {
|
|
23
|
+
"about": "A partner's currency converter that needs scripts. `sandbox=\"allow-scripts\"` grants that one capability, so the script runs and still cannot read the page around it, submit a form or open a window.",
|
|
24
|
+
"title": "Granting scripts"
|
|
25
|
+
},
|
|
26
|
+
"title": "Iframe",
|
|
27
|
+
"widget": {
|
|
28
|
+
"amount": "Amount in USD",
|
|
29
|
+
"converted": "Converted:",
|
|
30
|
+
"title": "Currency converter"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "Crops a picture: a selection over the part to keep, which a pointer drags and resizes and the arrow keys move, over a picture that zooms, turns, flips and pans. The application reads the crop and exports it as an image.",
|
|
3
|
+
"banner": {
|
|
4
|
+
"about": "`fixedCropArea` keeps a 3:1 frame in place. Drag the picture to pan it under the frame, scroll or pinch to zoom, and use the arrow keys on the frame to pan and plus or minus to zoom.",
|
|
5
|
+
"title": "Fixed frame"
|
|
6
|
+
},
|
|
7
|
+
"bannerInstructions": "Use the arrow keys to move the picture under the frame. Press plus or minus to zoom.",
|
|
8
|
+
"bannerLabel": "Position the banner",
|
|
9
|
+
"cover": {
|
|
10
|
+
"about": "A 16:9 crop for a cover photo, with buttons that turn the picture a quarter turn either way, flip it and reset it. The buttons call the api `useImageCropper` returns.",
|
|
11
|
+
"title": "Cover with rotation and flip"
|
|
12
|
+
},
|
|
13
|
+
"coverLabel": "Crop the cover photo",
|
|
14
|
+
"flip": "Flip horizontally",
|
|
15
|
+
"free": {
|
|
16
|
+
"about": "A crop of any shape, at least 80 pixels on each side and at most 200 pixels tall. `onCropChange` reports the crop, and `valueText` writes the value a screen reader hears.",
|
|
17
|
+
"title": "Free crop"
|
|
18
|
+
},
|
|
19
|
+
"label": "Crop the photo",
|
|
20
|
+
"name": "Ada Okafor",
|
|
21
|
+
"photo": {
|
|
22
|
+
"about": "Drag the selection to move it and its handles to resize it. Focus the selection with Tab, move it with the arrow keys, resize it with Alt and an arrow, and zoom with plus and minus. Shift and Control take larger steps.",
|
|
23
|
+
"title": "Crop"
|
|
24
|
+
},
|
|
25
|
+
"profile": {
|
|
26
|
+
"about": "A round, square crop for a profile picture. `getCroppedImage` exports the crop at 256 pixels, and the avatar shows it.",
|
|
27
|
+
"title": "Profile picture"
|
|
28
|
+
},
|
|
29
|
+
"profileLabel": "Crop your profile picture",
|
|
30
|
+
"radius": {
|
|
31
|
+
"about": "The viewport's corners, from the tightest to the roundest. A fully round viewport would clip the selection's corners, so the axis stops at `l3`.",
|
|
32
|
+
"title": "Corners"
|
|
33
|
+
},
|
|
34
|
+
"reset": "Reset",
|
|
35
|
+
"rotateLeft": "Rotate left",
|
|
36
|
+
"rotateRight": "Rotate right",
|
|
37
|
+
"save": "Use as profile picture",
|
|
38
|
+
"size": "Crop: {{width}} × {{height}} px",
|
|
39
|
+
"title": "Image cropper",
|
|
40
|
+
"valueText": "{{width}} by {{height}} pixels",
|
|
41
|
+
"zoomIn": "Zoom in",
|
|
42
|
+
"zoomOut": "Zoom out"
|
|
43
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"about": "Plays a clip in a frame that keeps its shape before the clip loads. A clip that starts by itself shows its poster to a reader who asks for reduced motion, shows the browser's controls, and plays muted.",
|
|
3
|
+
"background": {
|
|
4
|
+
"about": "A decorative loop with `controls={false}` and a button of its own that pauses it, because moving content that starts by itself needs a way to stop it. With reduced motion on, the loop does not start, and the button starts it.",
|
|
5
|
+
"title": "Background with a pause button"
|
|
6
|
+
},
|
|
7
|
+
"fit": {
|
|
8
|
+
"about": "A 16:9 clip in a square. `cover` fills the square and crops the sides, and `contain` shows the whole frame between `bg.emphasized` bars.",
|
|
9
|
+
"title": "Fits"
|
|
10
|
+
},
|
|
11
|
+
"loop": {
|
|
12
|
+
"about": "`autoPlay` starts the loop muted, inline and with the browser's controls, so the reader can pause it. Turn on reduced motion in the system settings and reload: the loop shows its poster, and the controls start it.",
|
|
13
|
+
"title": "Playing by itself"
|
|
14
|
+
},
|
|
15
|
+
"loopCaption": "The dashboard updates as each payment settles.",
|
|
16
|
+
"pause": "Pause the background",
|
|
17
|
+
"play": "Play the background",
|
|
18
|
+
"radius": {
|
|
19
|
+
"about": "The four corners of the theme, from the tightest to the fully round.",
|
|
20
|
+
"title": "Corners"
|
|
21
|
+
},
|
|
22
|
+
"ratio": {
|
|
23
|
+
"about": "The theme's seven ratios. The element keeps its shape before the clip's metadata loads, so nothing below it moves while the clip loads.",
|
|
24
|
+
"title": "Ratios"
|
|
25
|
+
},
|
|
26
|
+
"title": "Video",
|
|
27
|
+
"tour": {
|
|
28
|
+
"about": "The reader starts the clip from the browser's controls, which a keyboard and a screen reader already operate. The figure's caption names the clip.",
|
|
29
|
+
"title": "Started by the reader"
|
|
30
|
+
},
|
|
31
|
+
"tourCaption": "A two-minute tour of the reconciliation screen."
|
|
32
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stealthscale/component-media",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Renders pictures of people and things, crops pictures, shows slides and plays clips: an avatar, an image cropper, a carousel and a video.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"avatar",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"dist",
|
|
24
24
|
"LICENSE",
|
|
25
|
+
"locales",
|
|
25
26
|
"README.md"
|
|
26
27
|
],
|
|
27
28
|
"type": "module",
|
|
@@ -38,42 +39,42 @@
|
|
|
38
39
|
"access": "public"
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"@zag-js/avatar": "1.
|
|
42
|
-
"@zag-js/carousel": "1.
|
|
43
|
-
"@zag-js/dom-query": "1.
|
|
44
|
-
"@zag-js/image-cropper": "1.
|
|
45
|
-
"@zag-js/react": "1.
|
|
46
|
-
"@zag-js/types": "1.
|
|
47
|
-
"@zag-js/utils": "1.
|
|
42
|
+
"@zag-js/avatar": "1.45.0",
|
|
43
|
+
"@zag-js/carousel": "1.45.0",
|
|
44
|
+
"@zag-js/dom-query": "1.45.0",
|
|
45
|
+
"@zag-js/image-cropper": "1.45.0",
|
|
46
|
+
"@zag-js/react": "1.45.0",
|
|
47
|
+
"@zag-js/types": "1.45.0",
|
|
48
|
+
"@zag-js/utils": "1.45.0"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"@arethetypeswrong/core": "^0.18",
|
|
51
|
-
"@stealthscale/component-actions": "^0.
|
|
52
|
-
"@stealthscale/component-layout": "^0.
|
|
53
|
-
"@stealthscale/hooks": "^0.
|
|
54
|
-
"@stealthscale/theme": "^0.
|
|
55
|
-
"@stealthscale/vite-config": "^0.
|
|
56
|
-
"@stealthscale/vite-config-i18n": "^0.
|
|
57
|
-
"@stealthscale/vite-config-react": "^0.
|
|
58
|
-
"@stealthscale/vite-config-specimen": "^0.
|
|
59
|
-
"@stealthscale/vite-config-theme": "^0.
|
|
52
|
+
"@stealthscale/component-actions": "^0.2.3",
|
|
53
|
+
"@stealthscale/component-layout": "^0.2.2",
|
|
54
|
+
"@stealthscale/hooks": "^0.3.0",
|
|
55
|
+
"@stealthscale/theme": "^0.5.0",
|
|
56
|
+
"@stealthscale/vite-config": "^0.8.0",
|
|
57
|
+
"@stealthscale/vite-config-i18n": "^0.2.2",
|
|
58
|
+
"@stealthscale/vite-config-react": "^0.9.1",
|
|
59
|
+
"@stealthscale/vite-config-specimen": "^0.3.0",
|
|
60
|
+
"@stealthscale/vite-config-theme": "^0.3.0",
|
|
60
61
|
"@stealthscale/vite-config-typescript": "^0.3.0",
|
|
61
62
|
"@testing-library/react": "^16.3",
|
|
62
63
|
"@types/react": "^19.3",
|
|
63
64
|
"@types/react-dom": "^19.3",
|
|
64
65
|
"happy-dom": "^20.14",
|
|
65
|
-
"lucide-react": "^1.
|
|
66
|
-
"oxc-transform-react": "^0.
|
|
66
|
+
"lucide-react": "^1.52",
|
|
67
|
+
"oxc-transform-react": "^0.153",
|
|
67
68
|
"publint": "^0.3",
|
|
68
69
|
"react": "^19.3",
|
|
69
70
|
"react-dom": "^19.3",
|
|
70
71
|
"typescript": "^7.0",
|
|
71
|
-
"vitest": "5.0.
|
|
72
|
+
"vitest": "5.0.3"
|
|
72
73
|
},
|
|
73
74
|
"peerDependencies": {
|
|
74
|
-
"@stealthscale/component-actions": "^0.
|
|
75
|
-
"@stealthscale/hooks": "^0.
|
|
76
|
-
"@stealthscale/theme": "^0.
|
|
75
|
+
"@stealthscale/component-actions": "^0.2.3",
|
|
76
|
+
"@stealthscale/hooks": "^0.3.0",
|
|
77
|
+
"@stealthscale/theme": "^0.5.0",
|
|
77
78
|
"react": "^19.3"
|
|
78
79
|
},
|
|
79
80
|
"engines": {
|