@aviala-design/spiral 2.7.1 → 2.8.1
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/component-changelogs.json +150 -0
- package/dist/index.cjs +2962 -1501
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +164 -8
- package/dist/index.d.ts +164 -8
- package/dist/index.js +2785 -1302
- package/dist/index.js.map +1 -1
- package/dist/props.json +163 -10
- package/dist/styles.css +48 -5
- package/package.json +6 -4
package/dist/props.json
CHANGED
|
@@ -159,7 +159,6 @@
|
|
|
159
159
|
{
|
|
160
160
|
"name": "error",
|
|
161
161
|
"type": "boolean",
|
|
162
|
-
"defaultValue": "false",
|
|
163
162
|
"required": false,
|
|
164
163
|
"description": ""
|
|
165
164
|
}
|
|
@@ -244,7 +243,6 @@
|
|
|
244
243
|
{
|
|
245
244
|
"name": "error",
|
|
246
245
|
"type": "boolean",
|
|
247
|
-
"defaultValue": "false",
|
|
248
246
|
"required": false,
|
|
249
247
|
"description": ""
|
|
250
248
|
}
|
|
@@ -1132,7 +1130,6 @@
|
|
|
1132
1130
|
{
|
|
1133
1131
|
"name": "error",
|
|
1134
1132
|
"type": "boolean",
|
|
1135
|
-
"defaultValue": "false",
|
|
1136
1133
|
"required": false,
|
|
1137
1134
|
"description": ""
|
|
1138
1135
|
},
|
|
@@ -1394,7 +1391,6 @@
|
|
|
1394
1391
|
{
|
|
1395
1392
|
"name": "error",
|
|
1396
1393
|
"type": "boolean",
|
|
1397
|
-
"defaultValue": "false",
|
|
1398
1394
|
"required": false,
|
|
1399
1395
|
"description": ""
|
|
1400
1396
|
},
|
|
@@ -1496,7 +1492,6 @@
|
|
|
1496
1492
|
{
|
|
1497
1493
|
"name": "error",
|
|
1498
1494
|
"type": "boolean",
|
|
1499
|
-
"defaultValue": "false",
|
|
1500
1495
|
"required": false,
|
|
1501
1496
|
"description": ""
|
|
1502
1497
|
},
|
|
@@ -1654,7 +1649,6 @@
|
|
|
1654
1649
|
{
|
|
1655
1650
|
"name": "error",
|
|
1656
1651
|
"type": "boolean",
|
|
1657
|
-
"defaultValue": "false",
|
|
1658
1652
|
"required": false,
|
|
1659
1653
|
"description": ""
|
|
1660
1654
|
},
|
|
@@ -1841,7 +1835,6 @@
|
|
|
1841
1835
|
{
|
|
1842
1836
|
"name": "error",
|
|
1843
1837
|
"type": "boolean",
|
|
1844
|
-
"defaultValue": "false",
|
|
1845
1838
|
"required": false,
|
|
1846
1839
|
"description": ""
|
|
1847
1840
|
}
|
|
@@ -2133,7 +2126,6 @@
|
|
|
2133
2126
|
{
|
|
2134
2127
|
"name": "error",
|
|
2135
2128
|
"type": "boolean",
|
|
2136
|
-
"defaultValue": "false",
|
|
2137
2129
|
"required": false,
|
|
2138
2130
|
"description": ""
|
|
2139
2131
|
},
|
|
@@ -2286,7 +2278,6 @@
|
|
|
2286
2278
|
{
|
|
2287
2279
|
"name": "error",
|
|
2288
2280
|
"type": "boolean",
|
|
2289
|
-
"defaultValue": "false",
|
|
2290
2281
|
"required": false,
|
|
2291
2282
|
"description": ""
|
|
2292
2283
|
},
|
|
@@ -3599,7 +3590,7 @@
|
|
|
3599
3590
|
},
|
|
3600
3591
|
"FormField": {
|
|
3601
3592
|
"displayName": "FormField",
|
|
3602
|
-
"description": "FormField — layout wrapper around a form control, or a react-hook-form\nbound field when given `name` + `render` (shadcn-style).",
|
|
3593
|
+
"description": "FormField — layout wrapper around a form control, or a react-hook-form\nbound field when given `name` + `render` (shadcn-style).\n\nWhen an error tip is shown, nested Spiral controls that support `error`\n(Input, Textarea, SelectTrigger, …) inherit the invalid state unless they\nset an explicit `error` prop.",
|
|
3603
3594
|
"props": [
|
|
3604
3595
|
{
|
|
3605
3596
|
"name": "label",
|
|
@@ -4660,6 +4651,168 @@
|
|
|
4660
4651
|
}
|
|
4661
4652
|
]
|
|
4662
4653
|
},
|
|
4654
|
+
"Video": {
|
|
4655
|
+
"displayName": "Video",
|
|
4656
|
+
"description": "",
|
|
4657
|
+
"props": [
|
|
4658
|
+
{
|
|
4659
|
+
"name": "appearance",
|
|
4660
|
+
"type": "\"default\" | \"light\"",
|
|
4661
|
+
"values": [
|
|
4662
|
+
"default",
|
|
4663
|
+
"light"
|
|
4664
|
+
],
|
|
4665
|
+
"defaultValue": "default",
|
|
4666
|
+
"required": false,
|
|
4667
|
+
"description": "Figma `Style` — Default stacks the bar; Light floats a pill bar over the stage."
|
|
4668
|
+
},
|
|
4669
|
+
{
|
|
4670
|
+
"name": "skipSeconds",
|
|
4671
|
+
"type": "number",
|
|
4672
|
+
"defaultValue": "10",
|
|
4673
|
+
"required": false,
|
|
4674
|
+
"description": "Seconds to skip when Previous / Next have no playlist handlers."
|
|
4675
|
+
},
|
|
4676
|
+
{
|
|
4677
|
+
"name": "playbackRates",
|
|
4678
|
+
"type": "number[]",
|
|
4679
|
+
"defaultValue": "[...DEFAULT_PLAYBACK_RATES]",
|
|
4680
|
+
"required": false,
|
|
4681
|
+
"description": "Available playback rates in the speed popover."
|
|
4682
|
+
},
|
|
4683
|
+
{
|
|
4684
|
+
"name": "muted",
|
|
4685
|
+
"type": "boolean",
|
|
4686
|
+
"required": false,
|
|
4687
|
+
"description": ""
|
|
4688
|
+
},
|
|
4689
|
+
{
|
|
4690
|
+
"name": "defaultMuted",
|
|
4691
|
+
"type": "boolean",
|
|
4692
|
+
"required": false,
|
|
4693
|
+
"description": ""
|
|
4694
|
+
},
|
|
4695
|
+
{
|
|
4696
|
+
"name": "onMutedChange",
|
|
4697
|
+
"type": "(muted: boolean) => void",
|
|
4698
|
+
"required": false,
|
|
4699
|
+
"description": ""
|
|
4700
|
+
},
|
|
4701
|
+
{
|
|
4702
|
+
"name": "playbackRate",
|
|
4703
|
+
"type": "number",
|
|
4704
|
+
"required": false,
|
|
4705
|
+
"description": ""
|
|
4706
|
+
},
|
|
4707
|
+
{
|
|
4708
|
+
"name": "defaultPlaybackRate",
|
|
4709
|
+
"type": "number",
|
|
4710
|
+
"required": false,
|
|
4711
|
+
"description": ""
|
|
4712
|
+
},
|
|
4713
|
+
{
|
|
4714
|
+
"name": "onPlaybackRateChange",
|
|
4715
|
+
"type": "(rate: number) => void",
|
|
4716
|
+
"required": false,
|
|
4717
|
+
"description": ""
|
|
4718
|
+
},
|
|
4719
|
+
{
|
|
4720
|
+
"name": "objectFit",
|
|
4721
|
+
"type": "\"fill\" | \"original\" | \"stretch\"",
|
|
4722
|
+
"values": [
|
|
4723
|
+
"fill",
|
|
4724
|
+
"original",
|
|
4725
|
+
"stretch"
|
|
4726
|
+
],
|
|
4727
|
+
"required": false,
|
|
4728
|
+
"description": "Figma 画面比例 — original→contain, stretch→fill, fill→cover."
|
|
4729
|
+
},
|
|
4730
|
+
{
|
|
4731
|
+
"name": "defaultObjectFit",
|
|
4732
|
+
"type": "\"fill\" | \"original\" | \"stretch\"",
|
|
4733
|
+
"values": [
|
|
4734
|
+
"fill",
|
|
4735
|
+
"original",
|
|
4736
|
+
"stretch"
|
|
4737
|
+
],
|
|
4738
|
+
"required": false,
|
|
4739
|
+
"description": ""
|
|
4740
|
+
},
|
|
4741
|
+
{
|
|
4742
|
+
"name": "onObjectFitChange",
|
|
4743
|
+
"type": "(fit: VideoObjectFit) => void",
|
|
4744
|
+
"required": false,
|
|
4745
|
+
"description": ""
|
|
4746
|
+
},
|
|
4747
|
+
{
|
|
4748
|
+
"name": "volumeBalance",
|
|
4749
|
+
"type": "boolean",
|
|
4750
|
+
"required": false,
|
|
4751
|
+
"description": "Lightweight loudness balance via Web Audio DynamicsCompressor."
|
|
4752
|
+
},
|
|
4753
|
+
{
|
|
4754
|
+
"name": "defaultVolumeBalance",
|
|
4755
|
+
"type": "boolean",
|
|
4756
|
+
"required": false,
|
|
4757
|
+
"description": ""
|
|
4758
|
+
},
|
|
4759
|
+
{
|
|
4760
|
+
"name": "onVolumeBalanceChange",
|
|
4761
|
+
"type": "(enabled: boolean) => void",
|
|
4762
|
+
"required": false,
|
|
4763
|
+
"description": ""
|
|
4764
|
+
},
|
|
4765
|
+
{
|
|
4766
|
+
"name": "volume",
|
|
4767
|
+
"type": "number",
|
|
4768
|
+
"required": false,
|
|
4769
|
+
"description": "Linear gain 0–1 (`HTMLMediaElement.volume`)."
|
|
4770
|
+
},
|
|
4771
|
+
{
|
|
4772
|
+
"name": "defaultVolume",
|
|
4773
|
+
"type": "number",
|
|
4774
|
+
"required": false,
|
|
4775
|
+
"description": ""
|
|
4776
|
+
},
|
|
4777
|
+
{
|
|
4778
|
+
"name": "onVolumeChange",
|
|
4779
|
+
"type": "(volume: number) => void",
|
|
4780
|
+
"required": false,
|
|
4781
|
+
"description": ""
|
|
4782
|
+
},
|
|
4783
|
+
{
|
|
4784
|
+
"name": "onPrevious",
|
|
4785
|
+
"type": "() => void",
|
|
4786
|
+
"required": false,
|
|
4787
|
+
"description": "Override Previous (default: seek back `skipSeconds`)."
|
|
4788
|
+
},
|
|
4789
|
+
{
|
|
4790
|
+
"name": "onNext",
|
|
4791
|
+
"type": "() => void",
|
|
4792
|
+
"required": false,
|
|
4793
|
+
"description": "Override Next (default: seek forward `skipSeconds`)."
|
|
4794
|
+
},
|
|
4795
|
+
{
|
|
4796
|
+
"name": "stageBackground",
|
|
4797
|
+
"type": "string",
|
|
4798
|
+
"required": false,
|
|
4799
|
+
"description": "Letterbox / pillarbox fill behind the media.\nCSS color value — prefer a token, e.g. `var(--box-box-normal-background-blackonly)`.\nDefaults to Black (`--box-box-normal-background-blackonly`)."
|
|
4800
|
+
},
|
|
4801
|
+
{
|
|
4802
|
+
"name": "autoHideControls",
|
|
4803
|
+
"type": "boolean",
|
|
4804
|
+
"defaultValue": "false",
|
|
4805
|
+
"required": false,
|
|
4806
|
+
"description": "Auto-hide the control bar after idle (slide down + fade).\nPointer move / press on the player reveals it again."
|
|
4807
|
+
},
|
|
4808
|
+
{
|
|
4809
|
+
"name": "autoHideDelay",
|
|
4810
|
+
"type": "number",
|
|
4811
|
+
"required": false,
|
|
4812
|
+
"description": "Idle time in ms before hiding when `autoHideControls` is on. Default 2500."
|
|
4813
|
+
}
|
|
4814
|
+
]
|
|
4815
|
+
},
|
|
4663
4816
|
"ScrollPicker": {
|
|
4664
4817
|
"displayName": "ScrollPicker",
|
|
4665
4818
|
"description": "",
|
package/dist/styles.css
CHANGED
|
@@ -131,6 +131,10 @@
|
|
|
131
131
|
--control-control-normal-lightbackground-2: #e5e4e3;
|
|
132
132
|
--control-control-normal-background-3: #d6d5d4;
|
|
133
133
|
--control-control-normal-background-whiteonly: #ffffff;
|
|
134
|
+
--box-box-normal-background-whiteonly: #ffffff;
|
|
135
|
+
--box-box-normal-background-blackonly: #000000;
|
|
136
|
+
--box-box-normal-lightbackground-white: #f9f8f8;
|
|
137
|
+
--box-box-normal-lightbackground-black: #262525;
|
|
134
138
|
|
|
135
139
|
/* Neutral text series (body copy, labels, icons) */
|
|
136
140
|
--text-text-normal-text-black: #262525;
|
|
@@ -502,10 +506,14 @@
|
|
|
502
506
|
--switch-thumb-travel-small: calc(
|
|
503
507
|
var(--switch-width) - 2 * var(--switch-padding) - var(--switch-thumb-size-small)
|
|
504
508
|
);
|
|
505
|
-
--switch-transition-duration: 0.
|
|
506
|
-
--switch-
|
|
507
|
-
--switch-
|
|
508
|
-
--switch-thumb-
|
|
509
|
+
--switch-transition-duration: 0.26s;
|
|
510
|
+
--switch-thumb-lead-ease: cubic-bezier(0.16, 1, 0.3, 1);
|
|
511
|
+
--switch-thumb-trail-ease: cubic-bezier(0.35, 0, 0.15, 1);
|
|
512
|
+
--switch-transition-easing: var(--switch-thumb-lead-ease, cubic-bezier(0.16, 1, 0.3, 1));
|
|
513
|
+
--switch-press-transition-duration: 0.12s;
|
|
514
|
+
--switch-press-transition-easing: cubic-bezier(0.2, 0, 0.2, 1);
|
|
515
|
+
--switch-track-transition-duration: 0.22s;
|
|
516
|
+
--switch-thumb-press-scale: 1.2;
|
|
509
517
|
--switch-disabled-opacity: 0.55;
|
|
510
518
|
|
|
511
519
|
--link-fg-theme: var(--text-text-theme-primary-black, var(--button-no-bg-fg));
|
|
@@ -797,7 +805,8 @@
|
|
|
797
805
|
--navigation-rail-inline-start: 1px;
|
|
798
806
|
--navigation-rail-width: 3px;
|
|
799
807
|
--navigation-indicator-width-horizontal: 50px;
|
|
800
|
-
|
|
808
|
+
/* Keep Navigation timing independent of Switch micro-interaction tokens. */
|
|
809
|
+
--navigation-transition-duration: 0.3s;
|
|
801
810
|
/* Snappy ease-out: most travel happens early, then settles hard. */
|
|
802
811
|
--navigation-transition-easing: cubic-bezier(0.16, 1, 0.3, 1);
|
|
803
812
|
--navigation-icon-box: var(--line-height-regular, 1.125rem);
|
|
@@ -1039,6 +1048,40 @@
|
|
|
1039
1048
|
--card-fg: var(--text-text-normal-text-black, #262525);
|
|
1040
1049
|
--card-divider-height: 14px;
|
|
1041
1050
|
--card-trailing-gap: 10px;
|
|
1051
|
+
|
|
1052
|
+
/* Video — Figma Information Display → Video (1958:1400) */
|
|
1053
|
+
--video-width: 800px;
|
|
1054
|
+
--video-height: 450px;
|
|
1055
|
+
--video-radius: var(--border-radius-big, 12px);
|
|
1056
|
+
--video-bg: var(--normal-background-theme, var(--box-box-normal-lightbackground-white, #f9f8f8));
|
|
1057
|
+
--video-border: var(--border-border-normal-1, #f9f8f8);
|
|
1058
|
+
--video-bar-height: 46px;
|
|
1059
|
+
--video-bar-padding: var(--padding-default, 8px);
|
|
1060
|
+
--video-bar-gap: var(--gap-component-space, 8px);
|
|
1061
|
+
--video-bar-group-gap: var(--gap-inside, 4px);
|
|
1062
|
+
--video-bar-progress-gap: 10px;
|
|
1063
|
+
--video-bar-bg: var(--control-control-normal-lightbackground-1, #f0efef);
|
|
1064
|
+
--video-bar-light-inset: var(--padding-big, 14px);
|
|
1065
|
+
--video-bar-light-radius: var(--border-radius-allround, 99px);
|
|
1066
|
+
--video-bar-light-shadow: var(--aviala-shadow-level4-with-line);
|
|
1067
|
+
/* Light floating bar — frosted material over <video> (Figma fill luminosity ≈ glass) */
|
|
1068
|
+
--video-bar-light-blur: 24px;
|
|
1069
|
+
--video-bar-light-bg: color-mix(
|
|
1070
|
+
in srgb,
|
|
1071
|
+
var(--video-bar-bg, var(--control-control-normal-lightbackground-1, #f0efef)) 72%,
|
|
1072
|
+
transparent
|
|
1073
|
+
);
|
|
1074
|
+
--video-settings-width: 200px;
|
|
1075
|
+
--video-settings-gap: var(--gap-component-space, 8px);
|
|
1076
|
+
--video-settings-row-gap: var(--gap-inside-space, 6px);
|
|
1077
|
+
--video-settings-padding: var(--padding-middle, 10px);
|
|
1078
|
+
--video-speed-min-width: 48px;
|
|
1079
|
+
--video-speed-item-width: 160px;
|
|
1080
|
+
--video-volume-slider-size: 96px;
|
|
1081
|
+
/* Letterbox / pillarbox behind media — ALD box-normal-Background-blackOnly */
|
|
1082
|
+
--video-stage-bg: var(--box-box-normal-background-blackonly, #000000);
|
|
1083
|
+
--video-controls-hide-duration: 0.28s;
|
|
1084
|
+
--video-controls-hide-easing: cubic-bezier(0.33, 1, 0.68, 1);
|
|
1042
1085
|
}
|
|
1043
1086
|
|
|
1044
1087
|
@theme inline {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aviala-design/spiral",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.1",
|
|
4
4
|
"description": "Spiral 2 ? Aviala Design React component library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"clsx": "^2.1.1",
|
|
45
45
|
"colord": "^2.9.3",
|
|
46
46
|
"tailwind-merge": "^3.3.1",
|
|
47
|
-
"@aviala-design/icons": "2.
|
|
48
|
-
"@aviala-design/tokens": "2.5.
|
|
47
|
+
"@aviala-design/icons": "2.4.0",
|
|
48
|
+
"@aviala-design/tokens": "2.5.4"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"react": ">=18",
|
|
@@ -55,12 +55,13 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@hookform/resolvers": "^5.2.1",
|
|
57
57
|
"@types/react": "^19.1.8",
|
|
58
|
-
"react-hook-form": "^7.62.0",
|
|
59
58
|
"@types/react-dom": "^19.1.6",
|
|
60
59
|
"react-docgen-typescript": "^2.2.20",
|
|
60
|
+
"react-hook-form": "^7.62.0",
|
|
61
61
|
"rimraf": "^6.0.1",
|
|
62
62
|
"tsup": "^8.5.0",
|
|
63
63
|
"typescript": "^5.8.3",
|
|
64
|
+
"vitest": "^4.1.11",
|
|
64
65
|
"zod": "^4.0.17"
|
|
65
66
|
},
|
|
66
67
|
"scripts": {
|
|
@@ -69,6 +70,7 @@
|
|
|
69
70
|
"changelog:aggregate": "node scripts/aggregate-changelogs.mjs",
|
|
70
71
|
"changelog:stamp": "node scripts/stamp-unreleased.mjs",
|
|
71
72
|
"dev": "tsup --watch",
|
|
73
|
+
"test": "vitest run",
|
|
72
74
|
"typecheck": "tsc --noEmit",
|
|
73
75
|
"clean": "rimraf dist"
|
|
74
76
|
}
|