@seed-design/lynx-css 0.11.1 → 0.12.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.
Files changed (82) hide show
  1. package/all.css +3257 -1214
  2. package/all.min.css +1 -1
  3. package/base.css +12 -2
  4. package/base.min.css +1 -1
  5. package/package.json +1 -1
  6. package/recipes/alert-dialog.css +114 -0
  7. package/recipes/alert-dialog.d.ts +24 -0
  8. package/recipes/alert-dialog.mjs +67 -0
  9. package/recipes/app-bar.css +27 -21
  10. package/recipes/attachment-input-item.css +276 -0
  11. package/recipes/attachment-input-item.d.ts +40 -0
  12. package/recipes/attachment-input-item.mjs +128 -0
  13. package/recipes/attachment-input-trigger.css +53 -0
  14. package/recipes/attachment-input-trigger.d.ts +28 -0
  15. package/recipes/attachment-input-trigger.mjs +60 -0
  16. package/recipes/attachment-input.css +31 -0
  17. package/recipes/attachment-input.d.ts +21 -0
  18. package/recipes/attachment-input.mjs +44 -0
  19. package/recipes/callout.css +61 -56
  20. package/recipes/chip-tabs.css +136 -0
  21. package/recipes/chip-tabs.d.ts +52 -0
  22. package/recipes/chip-tabs.mjs +147 -0
  23. package/recipes/contextual-floating-button.css +131 -0
  24. package/recipes/contextual-floating-button.d.ts +40 -0
  25. package/recipes/contextual-floating-button.mjs +104 -0
  26. package/recipes/dialog.css +130 -0
  27. package/recipes/dialog.d.ts +28 -0
  28. package/recipes/dialog.mjs +76 -0
  29. package/recipes/floating-action-button.css +61 -0
  30. package/recipes/floating-action-button.d.ts +36 -0
  31. package/recipes/floating-action-button.mjs +67 -0
  32. package/recipes/help-bubble.css +112 -0
  33. package/recipes/help-bubble.d.ts +36 -0
  34. package/recipes/help-bubble.mjs +96 -0
  35. package/recipes/identity-placeholder.css +11 -0
  36. package/recipes/identity-placeholder.d.ts +24 -0
  37. package/recipes/identity-placeholder.mjs +43 -0
  38. package/recipes/input-button.css +20 -1
  39. package/recipes/input-button.d.ts +1 -1
  40. package/recipes/input-button.mjs +10 -1
  41. package/recipes/list-item.css +8 -9
  42. package/recipes/list-item.d.ts +4 -0
  43. package/recipes/list-item.mjs +11 -1
  44. package/recipes/menu-item.css +16 -2
  45. package/recipes/menu-item.d.ts +1 -1
  46. package/recipes/menu-item.mjs +4 -0
  47. package/recipes/menu-sheet-item.css +26 -15
  48. package/recipes/menu-sheet-item.d.ts +1 -1
  49. package/recipes/menu-sheet-item.mjs +4 -0
  50. package/recipes/menu-sheet.css +18 -13
  51. package/recipes/page-banner.css +8 -0
  52. package/recipes/page-banner.d.ts +1 -1
  53. package/recipes/page-banner.mjs +4 -0
  54. package/recipes/quantity-picker.css +213 -0
  55. package/recipes/quantity-picker.d.ts +44 -0
  56. package/recipes/quantity-picker.mjs +102 -0
  57. package/recipes/reaction-button.css +7 -12
  58. package/recipes/reaction-button.mjs +7 -8
  59. package/recipes/scroll-fog.css +66 -0
  60. package/recipes/scroll-fog.d.ts +36 -0
  61. package/recipes/scroll-fog.mjs +78 -0
  62. package/recipes/select-item.css +105 -0
  63. package/recipes/select-item.d.ts +36 -0
  64. package/recipes/select-item.mjs +83 -0
  65. package/recipes/select-trigger.css +147 -0
  66. package/recipes/select-trigger.d.ts +44 -0
  67. package/recipes/select-trigger.mjs +90 -0
  68. package/recipes/select.css +88 -0
  69. package/recipes/select.d.ts +32 -0
  70. package/recipes/select.mjs +81 -0
  71. package/recipes/skeleton.css +41 -0
  72. package/recipes/skeleton.d.ts +36 -0
  73. package/recipes/skeleton.mjs +50 -0
  74. package/recipes/slider-marker.css +44 -0
  75. package/recipes/slider-marker.d.ts +30 -0
  76. package/recipes/slider-marker.mjs +65 -0
  77. package/recipes/slider-tick.css +14 -0
  78. package/recipes/slider-tick.d.ts +22 -0
  79. package/recipes/slider-tick.mjs +29 -0
  80. package/recipes/slider.css +140 -0
  81. package/recipes/slider.d.ts +40 -0
  82. package/recipes/slider.mjs +99 -0
@@ -0,0 +1,81 @@
1
+ import './select.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectSlotNames = [
5
+ [
6
+ "positioner",
7
+ "seed-select__positioner"
8
+ ],
9
+ [
10
+ "backdrop",
11
+ "seed-select__backdrop"
12
+ ],
13
+ [
14
+ "content",
15
+ "seed-select__content"
16
+ ],
17
+ [
18
+ "scrollArea",
19
+ "seed-select__scrollArea"
20
+ ],
21
+ [
22
+ "scrollContent",
23
+ "seed-select__scrollContent"
24
+ ],
25
+ [
26
+ "group",
27
+ "seed-select__group"
28
+ ],
29
+ [
30
+ "groupLabel",
31
+ "seed-select__groupLabel"
32
+ ],
33
+ [
34
+ "separator",
35
+ "seed-select__separator"
36
+ ]
37
+ ];
38
+
39
+ const defaultVariant = {
40
+ "size": "large",
41
+ "open": false,
42
+ "positioned": false
43
+ };
44
+
45
+ const compoundVariants = [
46
+ {
47
+ "positioned": false
48
+ }
49
+ ];
50
+
51
+ export const selectVariantMap = {
52
+ "size": [
53
+ "large",
54
+ "medium"
55
+ ],
56
+ "open": [
57
+ true,
58
+ false
59
+ ],
60
+ "positioned": [
61
+ true,
62
+ false
63
+ ]
64
+ };
65
+
66
+ export const selectVariantKeys = Object.keys(selectVariantMap);
67
+
68
+ export function select(props) {
69
+ return Object.fromEntries(
70
+ selectSlotNames.map(([slot, className]) => {
71
+ return [
72
+ slot,
73
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
74
+ ];
75
+ }),
76
+ );
77
+ }
78
+
79
+ Object.assign(select, { splitVariantProps: (props) => splitVariantProps(props, selectVariantMap) });
80
+
81
+ // @recipe(seed): select
@@ -0,0 +1,41 @@
1
+ .seed-skeleton__root {
2
+ position: relative;
3
+ overflow: hidden
4
+ }
5
+ .seed-skeleton__shimmer {
6
+ position: absolute;
7
+ top: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ left: 0;
11
+ background-repeat: no-repeat;
12
+ animation-fill-mode: forwards;
13
+ animation-name: slide-x;
14
+ animation-duration: 1.5s;
15
+ animation-timing-function: var(--seed-timing-function-easing);
16
+ animation-iteration-count: infinite
17
+ }
18
+ .seed-skeleton__root--radius_0 {
19
+ border-radius: 0px
20
+ }
21
+ .seed-skeleton__root--radius_8 {
22
+ border-radius: 8px
23
+ }
24
+ .seed-skeleton__root--radius_16 {
25
+ border-radius: 16px
26
+ }
27
+ .seed-skeleton__root--radius_full {
28
+ border-radius: var(--seed-radius-full)
29
+ }
30
+ .seed-skeleton__root--tone_neutral {
31
+ background-color: var(--seed-color-palette-gray-200)
32
+ }
33
+ .seed-skeleton__shimmer--tone_neutral {
34
+ background-image: linear-gradient(90deg, var(--seed-gradient-shimmer-neutral))
35
+ }
36
+ .seed-skeleton__root--tone_magic {
37
+ background-color: var(--seed-color-bg-magic-weak)
38
+ }
39
+ .seed-skeleton__shimmer--tone_magic {
40
+ background-image: linear-gradient(90deg, var(--seed-gradient-shimmer-magic))
41
+ }
@@ -0,0 +1,36 @@
1
+ declare interface SkeletonVariant {
2
+ /**
3
+ * - `0`: 기본값입니다.
4
+ * - `8`: 텍스트 콘텐츠에 사용합니다.
5
+ * - `16`: 카드 및 썸네일에 사용합니다.
6
+ * - `full`: Avatar(원형) 콘텐츠에 사용합니다.
7
+ *
8
+ * @default 8
9
+ */
10
+ radius: "0" | "8" | "16" | "full";
11
+ /**
12
+ * - `neutral`: 데이터를 불러오는 일반적인 로딩 경험에 사용합니다.
13
+ * - `magic`: AI 기능이 활성화되었을 때 사용합니다.
14
+ *
15
+ * @default "neutral"
16
+ */
17
+ tone: "neutral" | "magic";
18
+ }
19
+
20
+ declare type SkeletonVariantMap = {
21
+ [key in keyof SkeletonVariant]: Array<SkeletonVariant[key]>;
22
+ };
23
+
24
+ export declare type SkeletonVariantProps = Partial<SkeletonVariant>;
25
+
26
+ export declare type SkeletonSlotName = "root" | "shimmer";
27
+
28
+ export declare const skeletonVariantMap: SkeletonVariantMap;
29
+
30
+ export declare const skeleton: ((
31
+ props?: SkeletonVariantProps,
32
+ ) => Record<SkeletonSlotName, string>) & {
33
+ splitVariantProps: <T extends SkeletonVariantProps>(
34
+ props: T,
35
+ ) => [SkeletonVariantProps, Omit<T, keyof SkeletonVariantProps>];
36
+ }
@@ -0,0 +1,50 @@
1
+ import './skeleton.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const skeletonSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-skeleton__root"
8
+ ],
9
+ [
10
+ "shimmer",
11
+ "seed-skeleton__shimmer"
12
+ ]
13
+ ];
14
+
15
+ const defaultVariant = {
16
+ "radius": 8,
17
+ "tone": "neutral"
18
+ };
19
+
20
+ const compoundVariants = [];
21
+
22
+ export const skeletonVariantMap = {
23
+ "radius": [
24
+ "0",
25
+ "8",
26
+ "16",
27
+ "full"
28
+ ],
29
+ "tone": [
30
+ "neutral",
31
+ "magic"
32
+ ]
33
+ };
34
+
35
+ export const skeletonVariantKeys = Object.keys(skeletonVariantMap);
36
+
37
+ export function skeleton(props) {
38
+ return Object.fromEntries(
39
+ skeletonSlotNames.map(([slot, className]) => {
40
+ return [
41
+ slot,
42
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
43
+ ];
44
+ }),
45
+ );
46
+ }
47
+
48
+ Object.assign(skeleton, { splitVariantProps: (props) => splitVariantProps(props, skeletonVariantMap) });
49
+
50
+ // @recipe(seed): skeleton
@@ -0,0 +1,44 @@
1
+ .seed-slider-marker {
2
+ position: absolute;
3
+ top: 0;
4
+ bottom: 0;
5
+ width: max-content;
6
+ left: calc(var(--slider-marker-left, 0%) + var(--slider-marker-offset, 0px));
7
+ color: var(--slider-marker-color, var(--seed-color-fg-neutral-muted));
8
+ font-weight: var(--seed-font-weight-regular);
9
+ font-size: var(--seed-font-size-t3);
10
+ line-height: var(--seed-line-height-t3)
11
+ }
12
+ .seed-slider-marker--align_start {}
13
+ .seed-slider-marker--align_center {}
14
+ .seed-slider-marker--align_end {}
15
+ .seed-slider-marker--dir_ltr {}
16
+ .seed-slider-marker--dir_rtl {}
17
+ .seed-slider-marker--disabled_true {
18
+ color: var(--seed-color-fg-disabled)
19
+ }
20
+ .seed-slider-marker--disabled_false {}
21
+ .seed-slider-marker--align_start-dir_ltr {
22
+ text-align: left;
23
+ transform: translateX(0%)
24
+ }
25
+ .seed-slider-marker--align_center-dir_ltr {
26
+ text-align: center;
27
+ transform: translateX(-50%)
28
+ }
29
+ .seed-slider-marker--align_end-dir_ltr {
30
+ text-align: right;
31
+ transform: translateX(-100%)
32
+ }
33
+ .seed-slider-marker--align_start-dir_rtl {
34
+ text-align: right;
35
+ transform: translateX(-100%)
36
+ }
37
+ .seed-slider-marker--align_center-dir_rtl {
38
+ text-align: center;
39
+ transform: translateX(-50%)
40
+ }
41
+ .seed-slider-marker--align_end-dir_rtl {
42
+ text-align: left;
43
+ transform: translateX(0%)
44
+ }
@@ -0,0 +1,30 @@
1
+ declare interface SliderMarkerVariant {
2
+ /**
3
+ * @default "center"
4
+ */
5
+ align: "start" | "center" | "end";
6
+ /**
7
+ * @default "ltr"
8
+ */
9
+ dir: "ltr" | "rtl";
10
+ /**
11
+ * @default false
12
+ */
13
+ disabled: boolean;
14
+ }
15
+
16
+ declare type SliderMarkerVariantMap = {
17
+ [key in keyof SliderMarkerVariant]: Array<SliderMarkerVariant[key]>;
18
+ };
19
+
20
+ export declare type SliderMarkerVariantProps = Partial<SliderMarkerVariant>;
21
+
22
+ export declare const sliderMarkerVariantMap: SliderMarkerVariantMap;
23
+
24
+ export declare const sliderMarker: ((
25
+ props?: SliderMarkerVariantProps,
26
+ ) => string) & {
27
+ splitVariantProps: <T extends SliderMarkerVariantProps>(
28
+ props: T,
29
+ ) => [SliderMarkerVariantProps, Omit<T, keyof SliderMarkerVariantProps>];
30
+ }
@@ -0,0 +1,65 @@
1
+ import './slider-marker.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const defaultVariant = {
5
+ "align": "center",
6
+ "dir": "ltr",
7
+ "disabled": false
8
+ };
9
+
10
+ const compoundVariants = [
11
+ {
12
+ "align": "start",
13
+ "dir": "ltr"
14
+ },
15
+ {
16
+ "align": "center",
17
+ "dir": "ltr"
18
+ },
19
+ {
20
+ "align": "end",
21
+ "dir": "ltr"
22
+ },
23
+ {
24
+ "align": "start",
25
+ "dir": "rtl"
26
+ },
27
+ {
28
+ "align": "center",
29
+ "dir": "rtl"
30
+ },
31
+ {
32
+ "align": "end",
33
+ "dir": "rtl"
34
+ }
35
+ ];
36
+
37
+ export const sliderMarkerVariantMap = {
38
+ "align": [
39
+ "start",
40
+ "center",
41
+ "end"
42
+ ],
43
+ "dir": [
44
+ "ltr",
45
+ "rtl"
46
+ ],
47
+ "disabled": [
48
+ true,
49
+ false
50
+ ]
51
+ };
52
+
53
+ export const sliderMarkerVariantKeys = Object.keys(sliderMarkerVariantMap);
54
+
55
+ export function sliderMarker(props) {
56
+ return createClassName(
57
+ "seed-slider-marker",
58
+ mergeVariants(defaultVariant, props),
59
+ compoundVariants,
60
+ );
61
+ }
62
+
63
+ Object.assign(sliderMarker, { splitVariantProps: (props) => splitVariantProps(props, sliderMarkerVariantMap) });
64
+
65
+ // @recipe(seed): slider-marker
@@ -0,0 +1,14 @@
1
+ .seed-slider-tick {
2
+ position: absolute;
3
+ top: 50%;
4
+ height: 100%;
5
+ left: calc(var(--slider-tick-left, 0%) + var(--slider-tick-offset, 0px));
6
+ background-color: var(--seed-color-fg-neutral-inverted);
7
+ transform: translate(-50%, -50%)
8
+ }
9
+ .seed-slider-tick--weight_thin {
10
+ width: 1px
11
+ }
12
+ .seed-slider-tick--weight_thick {
13
+ width: var(--seed-dimension-x1)
14
+ }
@@ -0,0 +1,22 @@
1
+ declare interface SliderTickVariant {
2
+ /**
3
+ * @default "thin"
4
+ */
5
+ weight: "thin" | "thick";
6
+ }
7
+
8
+ declare type SliderTickVariantMap = {
9
+ [key in keyof SliderTickVariant]: Array<SliderTickVariant[key]>;
10
+ };
11
+
12
+ export declare type SliderTickVariantProps = Partial<SliderTickVariant>;
13
+
14
+ export declare const sliderTickVariantMap: SliderTickVariantMap;
15
+
16
+ export declare const sliderTick: ((
17
+ props?: SliderTickVariantProps,
18
+ ) => string) & {
19
+ splitVariantProps: <T extends SliderTickVariantProps>(
20
+ props: T,
21
+ ) => [SliderTickVariantProps, Omit<T, keyof SliderTickVariantProps>];
22
+ }
@@ -0,0 +1,29 @@
1
+ import './slider-tick.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const defaultVariant = {
5
+ "weight": "thin"
6
+ };
7
+
8
+ const compoundVariants = [];
9
+
10
+ export const sliderTickVariantMap = {
11
+ "weight": [
12
+ "thin",
13
+ "thick"
14
+ ]
15
+ };
16
+
17
+ export const sliderTickVariantKeys = Object.keys(sliderTickVariantMap);
18
+
19
+ export function sliderTick(props) {
20
+ return createClassName(
21
+ "seed-slider-tick",
22
+ mergeVariants(defaultVariant, props),
23
+ compoundVariants,
24
+ );
25
+ }
26
+
27
+ Object.assign(sliderTick, { splitVariantProps: (props) => splitVariantProps(props, sliderTickVariantMap) });
28
+
29
+ // @recipe(seed): slider-tick
@@ -0,0 +1,140 @@
1
+ .seed-slider__root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: stretch;
5
+ width: 100%;
6
+ gap: var(--seed-dimension-x0_5)
7
+ }
8
+ .seed-slider__control {
9
+ position: relative;
10
+ height: 26px;
11
+ display: flex;
12
+ align-items: center
13
+ }
14
+ .seed-slider__track {
15
+ position: relative;
16
+ flex-grow: 1;
17
+ height: var(--seed-dimension-x1);
18
+ background-color: var(--seed-color-palette-gray-400);
19
+ border-radius: var(--seed-radius-full);
20
+ overflow: hidden
21
+ }
22
+ .seed-slider__range {
23
+ position: absolute;
24
+ top: 0;
25
+ bottom: 0;
26
+ left: var(--slider-range-left, 0%);
27
+ width: var(--slider-range-width, 0%);
28
+ background-color: var(--seed-color-fg-neutral);
29
+ border-radius: var(--seed-radius-full);
30
+ transition: left var(--seed-duration-d3) var(--seed-timing-function-easing), width var(--seed-duration-d3) var(--seed-timing-function-easing)
31
+ }
32
+ .seed-slider__thumb {
33
+ position: absolute;
34
+ top: 50%;
35
+ left: calc(var(--slider-thumb-left, 0%) + var(--slider-thumb-offset, 0px));
36
+ width: var(--seed-dimension-x5);
37
+ height: var(--seed-dimension-x5);
38
+ background-color: var(--seed-color-bg-neutral-inverted);
39
+ border-radius: var(--seed-radius-full);
40
+ transform: translate(-50%, -50%);
41
+ transition: left var(--seed-duration-d3) var(--seed-timing-function-easing), transform var(--seed-duration-d3) var(--seed-timing-function-easing)
42
+ }
43
+ .seed-slider__markers {
44
+ position: relative;
45
+ height: var(--seed-line-height-t3)
46
+ }
47
+ .seed-slider__valueIndicatorMotion {
48
+ display: flex;
49
+ align-items: flex-start;
50
+ position: absolute;
51
+ top: 50%;
52
+ left: calc(var(--slider-value-indicator-left, 0%) + var(--slider-value-indicator-offset, 0px));
53
+ width: max-content;
54
+ padding-top: 8px;
55
+ padding-right: 8px;
56
+ padding-bottom: 8px;
57
+ padding-left: 8px;
58
+ opacity: 0;
59
+ transform: translate(-50%, calc(-100% - var(--seed-dimension-x5) / 2 - var(--seed-dimension-x3) + 8px)) scale(1);
60
+ transition: opacity var(--seed-duration-d4) var(--seed-timing-function-easing), transform var(--seed-duration-d4) var(--seed-timing-function-easing)
61
+ }
62
+ .seed-slider__valueIndicatorRoot {
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: center;
66
+ position: relative;
67
+ background: var(--seed-color-bg-neutral-inverted);
68
+ padding-top: var(--seed-dimension-x1);
69
+ padding-right: var(--seed-dimension-x2);
70
+ padding-bottom: var(--seed-dimension-x1);
71
+ padding-left: var(--seed-dimension-x2);
72
+ border-radius: var(--seed-radius-r1_5);
73
+ width: max-content;
74
+ min-width: calc(var(--seed-dimension-x2) * 2 + var(--seed-dimension-x2));
75
+ flex-shrink: 0;
76
+ min-height: calc(var(--seed-line-height-t3) + var(--seed-dimension-x1) * 2);
77
+ overflow: visible
78
+ }
79
+ .seed-slider__valueIndicatorArrow {
80
+ position: absolute;
81
+ top: 100%;
82
+ left: calc(50% + (var(--slider-thumb-offset, 0px) - var(--slider-value-indicator-offset, 0px)));
83
+ width: var(--seed-dimension-x2);
84
+ height: var(--seed-dimension-x2);
85
+ overflow: visible;
86
+ transform: translateX(-50%);
87
+ transition: left var(--seed-duration-d3) var(--seed-timing-function-easing)
88
+ }
89
+ .seed-slider__valueIndicatorArrowTip {
90
+ width: var(--seed-dimension-x2);
91
+ height: calc(var(--seed-dimension-x1_5) + 1px);
92
+ background-color: var(--seed-color-bg-neutral-inverted);
93
+ clip-path: path("M0 0 H8 V1 L6 5 Q4 7 2 5 L0 1 Z");
94
+ transform: translateY(-1px)
95
+ }
96
+ .seed-slider__valueIndicatorLabel {
97
+ color: var(--seed-color-fg-neutral-inverted);
98
+ font-size: var(--seed-font-size-t3);
99
+ line-height: var(--seed-line-height-t3);
100
+ font-weight: var(--seed-font-weight-medium);
101
+ flex-shrink: 0;
102
+ white-space: nowrap;
103
+ text-align: center
104
+ }
105
+ .seed-slider__track--disabled_true {
106
+ background-color: var(--seed-color-bg-disabled)
107
+ }
108
+ .seed-slider__range--disabled_true {
109
+ background-color: var(--seed-color-fg-disabled)
110
+ }
111
+ .seed-slider__thumb--disabled_true {
112
+ background-color: var(--seed-color-fg-disabled)
113
+ }
114
+ .seed-slider__markers--disabled_true {
115
+ --slider-marker-color: var(--seed-color-fg-disabled)
116
+ }
117
+ .seed-slider__range--dragging_true {
118
+ transition: none
119
+ }
120
+ .seed-slider__thumb--dragging_true {
121
+ transition: none
122
+ }
123
+ .seed-slider__valueIndicatorArrow--dragging_true {
124
+ transition: none
125
+ }
126
+ .seed-slider__thumb--thumbDragging_true {
127
+ transform: translate(-50%, -50%) scale(1.2)
128
+ }
129
+ .seed-slider__valueIndicatorMotion--valueIndicatorShown_true {
130
+ opacity: 1;
131
+ transform: translate(-50%, calc(-100% - var(--seed-dimension-x5) / 2 - var(--seed-dimension-x3) + 8px)) scale(1);
132
+ transition: opacity var(--seed-duration-d4) var(--seed-timing-function-enter), transform var(--seed-duration-d4) var(--seed-timing-function-enter)
133
+ }
134
+ .seed-slider__valueIndicatorMotion--valueIndicatorShown_false {
135
+ opacity: 0;
136
+ transform: translate(-50%, calc(-100% - var(--seed-dimension-x5) / 2 - 5px + 8px)) scale(1)
137
+ }
138
+ .seed-slider__valueIndicatorMotion--valueIndicatorEverShown_false {
139
+ transition-duration: 0s
140
+ }
@@ -0,0 +1,40 @@
1
+ declare interface SliderVariant {
2
+ /**
3
+ * @default false
4
+ */
5
+ disabled: boolean;
6
+ /**
7
+ * @default false
8
+ */
9
+ dragging: boolean;
10
+ /**
11
+ * @default false
12
+ */
13
+ thumbDragging: boolean;
14
+ /**
15
+ * @default false
16
+ */
17
+ valueIndicatorShown: boolean;
18
+ /**
19
+ * @default false
20
+ */
21
+ valueIndicatorEverShown: boolean;
22
+ }
23
+
24
+ declare type SliderVariantMap = {
25
+ [key in keyof SliderVariant]: Array<SliderVariant[key]>;
26
+ };
27
+
28
+ export declare type SliderVariantProps = Partial<SliderVariant>;
29
+
30
+ export declare type SliderSlotName = "root" | "control" | "track" | "range" | "thumb" | "markers" | "valueIndicatorMotion" | "valueIndicatorRoot" | "valueIndicatorArrow" | "valueIndicatorArrowTip" | "valueIndicatorLabel";
31
+
32
+ export declare const sliderVariantMap: SliderVariantMap;
33
+
34
+ export declare const slider: ((
35
+ props?: SliderVariantProps,
36
+ ) => Record<SliderSlotName, string>) & {
37
+ splitVariantProps: <T extends SliderVariantProps>(
38
+ props: T,
39
+ ) => [SliderVariantProps, Omit<T, keyof SliderVariantProps>];
40
+ }
@@ -0,0 +1,99 @@
1
+ import './slider.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const sliderSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-slider__root"
8
+ ],
9
+ [
10
+ "control",
11
+ "seed-slider__control"
12
+ ],
13
+ [
14
+ "track",
15
+ "seed-slider__track"
16
+ ],
17
+ [
18
+ "range",
19
+ "seed-slider__range"
20
+ ],
21
+ [
22
+ "thumb",
23
+ "seed-slider__thumb"
24
+ ],
25
+ [
26
+ "markers",
27
+ "seed-slider__markers"
28
+ ],
29
+ [
30
+ "valueIndicatorMotion",
31
+ "seed-slider__valueIndicatorMotion"
32
+ ],
33
+ [
34
+ "valueIndicatorRoot",
35
+ "seed-slider__valueIndicatorRoot"
36
+ ],
37
+ [
38
+ "valueIndicatorArrow",
39
+ "seed-slider__valueIndicatorArrow"
40
+ ],
41
+ [
42
+ "valueIndicatorArrowTip",
43
+ "seed-slider__valueIndicatorArrowTip"
44
+ ],
45
+ [
46
+ "valueIndicatorLabel",
47
+ "seed-slider__valueIndicatorLabel"
48
+ ]
49
+ ];
50
+
51
+ const defaultVariant = {
52
+ "disabled": false,
53
+ "dragging": false,
54
+ "thumbDragging": false,
55
+ "valueIndicatorShown": false,
56
+ "valueIndicatorEverShown": false
57
+ };
58
+
59
+ const compoundVariants = [];
60
+
61
+ export const sliderVariantMap = {
62
+ "disabled": [
63
+ true,
64
+ false
65
+ ],
66
+ "dragging": [
67
+ true,
68
+ false
69
+ ],
70
+ "thumbDragging": [
71
+ true,
72
+ false
73
+ ],
74
+ "valueIndicatorShown": [
75
+ true,
76
+ false
77
+ ],
78
+ "valueIndicatorEverShown": [
79
+ true,
80
+ false
81
+ ]
82
+ };
83
+
84
+ export const sliderVariantKeys = Object.keys(sliderVariantMap);
85
+
86
+ export function slider(props) {
87
+ return Object.fromEntries(
88
+ sliderSlotNames.map(([slot, className]) => {
89
+ return [
90
+ slot,
91
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
92
+ ];
93
+ }),
94
+ );
95
+ }
96
+
97
+ Object.assign(slider, { splitVariantProps: (props) => splitVariantProps(props, sliderVariantMap) });
98
+
99
+ // @recipe(seed): slider