webcoreui 1.4.0 → 1.5.0-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 (107) hide show
  1. package/README.md +15 -1
  2. package/components/Accordion/Accordion.svelte +3 -3
  3. package/components/Alert/Alert.svelte +3 -3
  4. package/components/AspectRatio/AspectRatio.svelte +22 -22
  5. package/components/Avatar/Avatar.svelte +4 -4
  6. package/components/Avatar/avatar.module.scss +3 -5
  7. package/components/Badge/Badge.svelte +2 -2
  8. package/components/Badge/badge.module.scss +5 -6
  9. package/components/Banner/Banner.svelte +4 -3
  10. package/components/Banner/banner.module.scss +4 -6
  11. package/components/BottomNavigation/BottomNavigation.svelte +4 -3
  12. package/components/BottomNavigation/bottomnavigation.module.scss +68 -70
  13. package/components/Breadcrumb/Breadcrumb.svelte +2 -2
  14. package/components/Button/Button.svelte +2 -2
  15. package/components/Button/button.module.scss +9 -12
  16. package/components/Card/Card.svelte +4 -4
  17. package/components/Card/card.module.scss +3 -7
  18. package/components/Carousel/Carousel.astro +2 -2
  19. package/components/Carousel/Carousel.svelte +16 -16
  20. package/components/Carousel/Carousel.tsx +2 -2
  21. package/components/Carousel/carousel.module.scss +3 -5
  22. package/components/Checkbox/Checkbox.svelte +4 -3
  23. package/components/Checkbox/checkbox.module.scss +4 -6
  24. package/components/Collapsible/Collapsible.svelte +4 -4
  25. package/components/Collapsible/collapsible.module.scss +5 -5
  26. package/components/ContextMenu/ContextMenu.svelte +8 -6
  27. package/components/Copy/Copy.svelte +2 -2
  28. package/components/Counter/Counter.svelte +6 -5
  29. package/components/Counter/counter.module.scss +3 -5
  30. package/components/DataTable/DataTable.svelte +15 -13
  31. package/components/Flex/Flex.svelte +4 -4
  32. package/components/Footer/Footer.svelte +6 -6
  33. package/components/Grid/Grid.svelte +4 -4
  34. package/components/Group/Group.svelte +2 -2
  35. package/components/Icon/Icon.svelte +13 -8
  36. package/components/Image/Image.svelte +51 -51
  37. package/components/ImageLoader/ImageLoader.svelte +2 -2
  38. package/components/Input/Input.svelte +5 -5
  39. package/components/Kbd/Kbd.svelte +2 -2
  40. package/components/List/List.svelte +7 -7
  41. package/components/List/List.tsx +2 -2
  42. package/components/Masonry/Masonry.svelte +7 -7
  43. package/components/Masonry/masonry.module.scss +4 -6
  44. package/components/Menu/Menu.svelte +6 -5
  45. package/components/Modal/Modal.svelte +4 -4
  46. package/components/Modal/modal.module.scss +5 -5
  47. package/components/OTPInput/OTPInput.svelte +4 -4
  48. package/components/OTPInput/otpinput.module.scss +0 -12
  49. package/components/Pagination/Pagination.svelte +2 -2
  50. package/components/Popover/Popover.svelte +2 -2
  51. package/components/Progress/Progress.svelte +5 -5
  52. package/components/Progress/progress.module.scss +15 -17
  53. package/components/Radio/Radio.astro +1 -0
  54. package/components/Radio/Radio.svelte +5 -3
  55. package/components/Radio/Radio.tsx +1 -0
  56. package/components/Radio/radio.module.scss +4 -6
  57. package/components/Radio/radio.ts +1 -0
  58. package/components/RangeSlider/RangeSlider.astro +4 -1
  59. package/components/RangeSlider/RangeSlider.svelte +14 -33
  60. package/components/RangeSlider/RangeSlider.tsx +4 -1
  61. package/components/RangeSlider/rangeslider.module.scss +14 -16
  62. package/components/RangeSlider/rangeslider.ts +1 -0
  63. package/components/Rating/Rating.svelte +7 -6
  64. package/components/Rating/rating.module.scss +13 -15
  65. package/components/Ribbon/Ribbon.svelte +2 -2
  66. package/components/Ribbon/ribbon.module.scss +9 -11
  67. package/components/Select/Select.astro +2 -0
  68. package/components/Select/Select.svelte +175 -172
  69. package/components/Select/Select.tsx +2 -0
  70. package/components/Select/select.ts +1 -0
  71. package/components/Sheet/Sheet.svelte +2 -2
  72. package/components/Sidebar/Sidebar.svelte +2 -2
  73. package/components/Skeleton/Skeleton.svelte +4 -4
  74. package/components/Skeleton/skeleton.module.scss +6 -9
  75. package/components/Slider/Slider.astro +6 -4
  76. package/components/Slider/Slider.svelte +10 -8
  77. package/components/Slider/Slider.tsx +6 -4
  78. package/components/Slider/slider.module.scss +12 -14
  79. package/components/Slider/slider.ts +3 -2
  80. package/components/SpeedDial/SpeedDial.svelte +3 -3
  81. package/components/SpeedDial/SpeedDial.tsx +1 -1
  82. package/components/SpeedDial/speeddial.module.scss +4 -6
  83. package/components/Spinner/Spinner.svelte +4 -4
  84. package/components/Spinner/spinner.module.scss +13 -14
  85. package/components/Spoiler/Spoiler.svelte +4 -3
  86. package/components/Spoiler/spoiler.module.scss +3 -5
  87. package/components/Stepper/Stepper.svelte +4 -4
  88. package/components/Stepper/stepper.defaults.scss +5 -0
  89. package/components/Stepper/stepper.module.scss +11 -13
  90. package/components/Switch/Switch.svelte +4 -4
  91. package/components/Switch/switch.module.scss +5 -7
  92. package/components/Table/Table.svelte +2 -2
  93. package/components/Tabs/Tabs.svelte +2 -2
  94. package/components/Textarea/Textarea.svelte +3 -3
  95. package/components/ThemeSwitcher/ThemeSwitcher.svelte +5 -5
  96. package/components/ThemeSwitcher/themeswitcher.module.scss +10 -12
  97. package/components/Timeline/Timeline.svelte +4 -4
  98. package/components/Timeline/timeline.module.scss +6 -8
  99. package/components/TimelineItem/TimelineItem.svelte +2 -2
  100. package/components/TimelineItem/timelineitem.module.scss +4 -4
  101. package/components/Toast/Toast.svelte +4 -4
  102. package/package.json +1 -1
  103. package/scss/config/functions.scss +41 -0
  104. package/scss/config/mixins.scss +65 -0
  105. package/scss/config.scss +1 -0
  106. package/scss/global/theme.scss +209 -194
  107. package/scss/setup.scss +6 -3
@@ -6,9 +6,9 @@ import { classNames } from '../../utils/classNames'
6
6
  import styles from './slider.module.scss'
7
7
 
8
8
  const Slider = ({
9
- min,
10
- max,
11
- value,
9
+ min = 0,
10
+ max = 100,
11
+ value = 0,
12
12
  step,
13
13
  disabled,
14
14
  color,
@@ -16,7 +16,8 @@ const Slider = ({
16
16
  thumb,
17
17
  id,
18
18
  className,
19
- onChange
19
+ onChange,
20
+ ...rest
20
21
  }: ReactSliderProps) => {
21
22
  const classes = classNames([
22
23
  styles.slider,
@@ -41,6 +42,7 @@ const Slider = ({
41
42
  id={id}
42
43
  style={styleVariables}
43
44
  onChange={onChange}
45
+ {...rest}
44
46
  />
45
47
 
46
48
  )
@@ -1,12 +1,10 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-slider-background: var(--w-color-primary-50);
5
- --w-slider-color: var(--w-color-primary);
6
- --w-slider-thumb: var(--w-color-primary-50);
7
- }
8
-
9
3
  .slider {
4
+ --bg: var(--w-slider-background, var(--w-color-primary-50));
5
+ --color: var(--w-slider-color, var(--w-color-primary));
6
+ --thumb: var(--w-slider-thumb, var(--w-color-primary-50));
7
+
10
8
  @include border-radius(xl);
11
9
  @include size('w100%');
12
10
  @include visibility(hidden);
@@ -43,30 +41,30 @@ body {
43
41
  }
44
42
 
45
43
  .slider::-webkit-slider-runnable-track {
46
- @include background(var(--w-slider-background));
44
+ @include background(var(--bg));
47
45
  }
48
46
 
49
47
  .slider::-moz-range-track {
50
- @include background(var(--w-slider-background));
48
+ @include background(var(--bg));
51
49
  @include size(h10px);
52
50
  }
53
51
 
54
52
  .slider::-webkit-slider-thumb {
55
- @include background(var(--w-slider-thumb));
53
+ @include background(var(--thumb));
56
54
  @include size(10px);
57
55
  @include border-radius(max);
58
- @include border(var(--w-slider-color));
56
+ @include border(var(--color));
59
57
 
60
58
  -webkit-appearance: none;
61
59
  appearance: none;
62
- box-shadow: -995px 0 0 990px var(--w-slider-color);
60
+ box-shadow: -995px 0 0 990px var(--color);
63
61
  }
64
62
 
65
63
  .slider::-moz-range-thumb {
66
- @include background(var(--w-slider-thumb));
64
+ @include background(var(--thumb));
67
65
  @include size(9px);
68
66
  @include border-radius(max);
69
- @include border(var(--w-slider-color));
67
+ @include border(var(--color));
70
68
 
71
- box-shadow: -995px 0 0 990px var(--w-slider-color);
69
+ box-shadow: -995px 0 0 990px var(--color);
72
70
  }
@@ -1,11 +1,12 @@
1
1
  import type { InputTarget } from '../Input/input'
2
2
 
3
3
  export type SliderProps = {
4
- min: number
5
- max: number
4
+ min?: number
5
+ max?: number
6
6
  value?: number
7
7
  step?: number
8
8
  disabled?: boolean
9
+ required?: boolean
9
10
  color?: string
10
11
  background?: string
11
12
  thumb?: string
@@ -22,13 +22,13 @@
22
22
 
23
23
  let show = $state(false)
24
24
 
25
- const classes = classNames([
25
+ const classes = $derived(classNames([
26
26
  styles.dial,
27
27
  position && styles[position],
28
28
  horizontal && styles.horizontal,
29
29
  circular && styles.circular,
30
30
  className
31
- ])
31
+ ]))
32
32
 
33
33
  const getTooltipPosition = () => {
34
34
  const positionMap = {
@@ -51,7 +51,7 @@
51
51
  const speedDial = get('[data-id="w-speed-dial"] button') as HTMLButtonElement
52
52
 
53
53
  const eventListener = (event: Event) => {
54
- if (!speedDial.contains((event.target || event.currentTarget) as HTMLElement)) {
54
+ if (!speedDial?.contains((event.target || event.currentTarget) as HTMLElement)) {
55
55
  show = false
56
56
  }
57
57
  }
@@ -51,7 +51,7 @@ const SpeedDial = ({
51
51
  const speedDial = get('[data-id="w-speed-dial"] button') as HTMLButtonElement
52
52
 
53
53
  const eventListener = (event: Event) => {
54
- if (!speedDial.contains((event.target || event.currentTarget) as HTMLElement)) {
54
+ if (!speedDial?.contains((event.target || event.currentTarget) as HTMLElement)) {
55
55
  setShow(false)
56
56
  }
57
57
  }
@@ -1,10 +1,8 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-speed-dial-size: 40px;
5
- }
6
-
7
3
  .dial {
4
+ --size: var(--w-speed-dial-size, 40px);
5
+
8
6
  @include layout(flex, column-reverse, center, xs);
9
7
  @include position(fixed, b20px, r20px);
10
8
 
@@ -54,7 +52,7 @@ body {
54
52
  .trigger {
55
53
  @include layout(flex, column);
56
54
  @include typography(bold);
57
- @include size(var(--w-speed-dial-size));
55
+ @include size(var(--size));
58
56
 
59
57
  user-select: none;
60
58
 
@@ -85,7 +83,7 @@ body {
85
83
 
86
84
  .button {
87
85
  @include layout(flex, column, xs);
88
- @include size(var(--w-speed-dial-size));
86
+ @include size(var(--size));
89
87
 
90
88
  svg {
91
89
  @include size(16px);
@@ -13,18 +13,18 @@
13
13
  dashArray
14
14
  }: SpinnerProps = $props()
15
15
 
16
- const classes = classNames([
16
+ const classes = $derived(classNames([
17
17
  styles.spinner,
18
18
  dashArray && styles.dashed
19
- ])
19
+ ]))
20
20
 
21
- const styleVariables = classNames([
21
+ const styleVariables = $derived(classNames([
22
22
  color && `--w-spinner-color: ${color};`,
23
23
  width && `--w-spinner-width: ${width}px;`,
24
24
  speed && `--w-spinner-speed: ${speed}s;`,
25
25
  size && `--w-spinner-size: ${size}px;`,
26
26
  dashArray && `--w-spinner-dash: ${dashArray}`
27
- ])
27
+ ]))
28
28
  </script>
29
29
 
30
30
  <svg
@@ -1,28 +1,26 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-spinner-color: var(--w-color-primary);
5
- --w-spinner-width: 2px;
6
- --w-spinner-speed: 2s;
7
- --w-spinner-size: 30px;
8
- --w-spinner-dash: 8;
9
- }
10
-
11
3
  .spinner {
4
+ --color: var(--w-spinner-color, var(--w-color-primary));
5
+ --width: var(--w-spinner-width, 2px);
6
+ --speed: var(--w-spinner-speed, 2s);
7
+ --size: var(--w-spinner-size, 30px);
8
+ --dash: var(--w-spinner-dash, 8);
9
+
12
10
  @include spacing(auto-none);
13
11
 
14
- width: var(--w-spinner-size);
15
- height: var(--w-spinner-size);
16
- animation: rotate var(--w-spinner-speed) linear infinite;
12
+ width: var(--size);
13
+ height: var(--size);
14
+ animation: rotate var(--speed) linear infinite;
17
15
 
18
16
  &.dashed .path {
19
- stroke-dasharray: var(--w-spinner-dash);
17
+ stroke-dasharray: var(--dash);
20
18
  animation: none;
21
19
  }
22
20
 
23
21
  .path {
24
- stroke: var(--w-spinner-color);
25
- stroke-width: var(--w-spinner-width);
22
+ stroke: var(--color);
23
+ stroke-width: var(--width);
26
24
  animation: dash 1.5s ease-in-out infinite;
27
25
  stroke-linecap: round;
28
26
  }
@@ -48,3 +46,4 @@ body {
48
46
  stroke-dashoffset: -124;
49
47
  }
50
48
  }
49
+
@@ -14,15 +14,16 @@
14
14
  children
15
15
  }: SvelteSpoilerProps = $props()
16
16
 
17
- const classes = classNames([
17
+ const classes = $derived(classNames([
18
18
  styles.spoiler,
19
19
  animated && styles.anim,
20
20
  block && styles.block
21
- ])
21
+ ]))
22
22
 
23
- const style = color
23
+ const style = $derived(color
24
24
  ? `--w-spoiler-color: ${color};`
25
25
  : null
26
+ )
26
27
 
27
28
  const toggle = (event: MouseEvent | KeyboardEvent) => {
28
29
  const target = event.currentTarget as HTMLSpanElement
@@ -1,12 +1,10 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-spoiler-color: var(--w-color-primary);
5
- }
6
-
7
3
  span.spoiler {
4
+ --color: var(--w-spoiler-color, var(--w-color-primary));
5
+
8
6
  @include border-radius();
9
- @include background(var(--w-spoiler-color));
7
+ @include background(var(--color));
10
8
  @include typography(hmd);
11
9
  @include visibility(inline);
12
10
 
@@ -17,18 +17,18 @@
17
17
  className
18
18
  }: StepperProps = $props()
19
19
 
20
- const classes = classNames([
20
+ const classes = $derived(classNames([
21
21
  styles.stepper,
22
22
  borderless && styles.borderless,
23
23
  vertical && styles.vertical,
24
24
  className
25
- ])
25
+ ]))
26
26
 
27
- const styleVariables = [
27
+ const styleVariables = $derived([
28
28
  color && `--w-stepper-color-border: ${color}`,
29
29
  completedColor && `--w-stepper-color-complete: ${completedColor}`,
30
30
  activeColor && `--w-stepper-color-active: ${activeColor}`
31
- ].filter(Boolean).join(';')
31
+ ].filter(Boolean).join(';'))
32
32
  </script>
33
33
 
34
34
  <ol class={classes} style={styleVariables || null}>
@@ -0,0 +1,5 @@
1
+ body {
2
+ --w-stepper-color-border: var(--w-color-primary-50);
3
+ --w-stepper-color-active: var(--w-color-info);
4
+ --w-stepper-color-complete: var(--w-color-success);
5
+ }
@@ -1,14 +1,12 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-stepper-color-border: var(--w-color-primary-50);
5
- --w-stepper-color-active: var(--w-color-info);
6
- --w-stepper-color-complete: var(--w-color-success);
7
- }
8
-
9
3
  $size: 20px;
10
4
 
11
5
  .stepper {
6
+ --border: var(--w-stepper-color-border, var(--w-color-primary-50));
7
+ --active: var(--w-stepper-color-active, var(--w-color-info));
8
+ --complete: var(--w-stepper-color-complete, var(--w-color-success));
9
+
12
10
  @include layout(flex, default, column);
13
11
  @include spacing(0);
14
12
  @include size('w100%');
@@ -16,7 +14,7 @@ $size: 20px;
16
14
  list-style-type: none;
17
15
 
18
16
  &:not(.borderless) .number {
19
- border: 2px solid var(--w-stepper-color-border);
17
+ border: 2px solid var(--border);
20
18
  }
21
19
 
22
20
  li {
@@ -31,7 +29,7 @@ $size: 20px;
31
29
 
32
30
  &::before {
33
31
  @include position(absolute, l16px);
34
- @include background(var(--w-stepper-color-border));
32
+ @include background(var(--border));
35
33
  @include size(w2px);
36
34
 
37
35
  top: -50%;
@@ -42,18 +40,18 @@ $size: 20px;
42
40
 
43
41
  &.completed::before,
44
42
  &.active::before {
45
- @include background(var(--w-stepper-color-complete));
43
+ @include background(var(--complete));
46
44
  }
47
45
  }
48
46
 
49
47
  &.active .number {
50
- border-color: var(--w-stepper-color-active);
51
- color: var(--w-stepper-color-active);
48
+ border-color: var(--active);
49
+ color: var(--active);
52
50
  }
53
51
 
54
52
  &.completed .number {
55
- border-color: var(--w-stepper-color-complete);
56
- color: var(--w-stepper-color-complete);
53
+ border-color: var(--complete);
54
+ color: var(--complete);
57
55
  }
58
56
 
59
57
  .number {
@@ -20,19 +20,19 @@
20
20
  ...rest
21
21
  }: SvelteSwitchProps = $props()
22
22
 
23
- const classes = classNames([
23
+ const classes = $derived(classNames([
24
24
  styles.switch,
25
25
  reverse && styles.reverse,
26
26
  small && styles.small,
27
27
  square && styles.square,
28
28
  disabled && styles.disabled,
29
29
  className
30
- ])
30
+ ]))
31
31
 
32
- const styleVariables = classNames([
32
+ const styleVariables = $derived(classNames([
33
33
  offColor && `--w-switch-off-color: ${offColor};`,
34
34
  onColor && `--w-switch-on-color: ${onColor};`
35
- ])
35
+ ]))
36
36
  </script>
37
37
 
38
38
  <label class={classes} style={styleVariables || null}>
@@ -1,11 +1,9 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-switch-off-color: var(--w-color-primary-50);
5
- --w-switch-on-color: var(--w-color-primary);
6
- }
7
-
8
3
  .switch {
4
+ --off-color: var(--w-switch-off-color, var(--w-color-primary-50));
5
+ --on-color: var(--w-switch-on-color, var(--w-color-primary));
6
+
9
7
  @include layout(inline-flex, v-center, sm);
10
8
  cursor: pointer;
11
9
  user-select: none;
@@ -53,7 +51,7 @@ body {
53
51
  @include visibility(none);
54
52
 
55
53
  &:checked + span {
56
- @include background(var(--w-switch-on-color));
54
+ @include background(var(--on-color));
57
55
 
58
56
  &::before {
59
57
  transform: translateX(30px);
@@ -66,7 +64,7 @@ body {
66
64
  @include position(relative);
67
65
  @include size(w60px, h30px);
68
66
  @include border-radius(xl);
69
- @include background(var(--w-switch-off-color));
67
+ @include background(var(--off-color));
70
68
 
71
69
  &::before {
72
70
  @include transition(transform);
@@ -17,7 +17,7 @@
17
17
  className
18
18
  }: TableProps = $props()
19
19
 
20
- const classes = classNames([
20
+ const classes = $derived(classNames([
21
21
  styles.table,
22
22
  hover && styles.hover,
23
23
  striped && styles[`striped-${striped}s`],
@@ -25,7 +25,7 @@
25
25
  compact && styles.compact,
26
26
  maxHeight && styles.scroll,
27
27
  className
28
- ])
28
+ ]))
29
29
  </script>
30
30
 
31
31
  <div class={classes} style={maxHeight ? `max-height:${maxHeight}` : null}>
@@ -17,13 +17,13 @@
17
17
  let active = $state('')
18
18
  let tabContainer: HTMLDivElement | undefined = $state()
19
19
 
20
- const classes = classNames([
20
+ const classes = $derived(classNames([
21
21
  styles.tabs,
22
22
  theme && styles[theme],
23
23
  vertical && styles.vertical,
24
24
  even && styles.even,
25
25
  className
26
- ])
26
+ ]))
27
27
 
28
28
  const setTab = (tab: string) => {
29
29
  const tabs = tabContainer!.querySelectorAll('[data-tab]')
@@ -20,12 +20,12 @@
20
20
  ...rest
21
21
  }: SvelteTextareaProps = $props()
22
22
 
23
- const classes = classNames([
23
+ const classes = $derived(classNames([
24
24
  styles.textarea,
25
25
  className
26
- ])
26
+ ]))
27
27
 
28
- const useLabel = !!(label || subText)
28
+ const useLabel = $derived(!!(label || subText))
29
29
  </script>
30
30
 
31
31
  <ConditionalWrapper
@@ -20,15 +20,15 @@
20
20
  let currentTheme = $state('')
21
21
  let toggled = false
22
22
 
23
- const classes = classNames([
23
+ const classes = $derived(classNames([
24
24
  styles.switcher,
25
25
  toggle && styles.toggle,
26
26
  className
27
- ])
27
+ ]))
28
28
 
29
- const primaryTheme = themes[Object.keys(themes)[0]]
30
- const secondaryTheme = themes[Object.keys(themes)[1]]
31
- const useIcons = primaryIcon && secondaryIcon
29
+ const primaryTheme = $derived(themes[Object.keys(themes)[0]])
30
+ const secondaryTheme = $derived(themes[Object.keys(themes)[1]])
31
+ const useIcons = $derived(primaryIcon && secondaryIcon)
32
32
 
33
33
  const setTheme = (theme: string | number) => {
34
34
  if (typeof theme === 'number') {
@@ -1,16 +1,14 @@
1
1
  @use '../../scss/config.scss' as *;
2
2
 
3
- body {
4
- --w-theme-switcher-size: 20px;
5
- }
6
-
7
3
  .switcher {
4
+ --size: var(--w-theme-switcher-size, 20px);
5
+
8
6
  @include layout(flex, sm);
9
7
 
10
8
  &.toggle {
11
9
  @include position(relative);
12
- width: var(--w-theme-switcher-size);
13
- height: var(--w-theme-switcher-size);
10
+ width: var(--size);
11
+ height: var(--size);
14
12
 
15
13
  .switch {
16
14
  position: absolute;
@@ -35,8 +33,8 @@ body {
35
33
  @include border-radius(max);
36
34
  @include position(relative);
37
35
 
38
- width: var(--w-theme-switcher-size);
39
- height: var(--w-theme-switcher-size);
36
+ width: var(--size);
37
+ height: var(--size);
40
38
  cursor: pointer;
41
39
  user-select: none;
42
40
 
@@ -53,8 +51,8 @@ body {
53
51
 
54
52
  svg, img {
55
53
  pointer-events: none;
56
- width: var(--w-theme-switcher-size);
57
- height: var(--w-theme-switcher-size);
54
+ width: var(--size);
55
+ height: var(--size);
58
56
  }
59
57
  }
60
58
 
@@ -71,7 +69,7 @@ body {
71
69
 
72
70
  &[data-active="true"]::after {
73
71
  @include layer(default);
74
- width: calc(var(--w-theme-switcher-size) + 5px);
75
- height: calc(var(--w-theme-switcher-size) + 5px);
72
+ width: calc(var(--size) + 5px);
73
+ height: calc(var(--size) + 5px);
76
74
  }
77
75
  }
@@ -16,19 +16,19 @@
16
16
  children
17
17
  }: SvelteTimelineProps = $props()
18
18
 
19
- const classes = classNames([
19
+ const classes = $derived(classNames([
20
20
  styles.timeline,
21
21
  theme && theme.split(' ').map(style => styles[style]),
22
22
  alternate && styles.alternate,
23
23
  centered && styles.centered,
24
24
  className
25
- ])
25
+ ]))
26
26
 
27
- const styleVariables = classNames([
27
+ const styleVariables = $derived(classNames([
28
28
  color && `--w-timeline-color: ${color};`,
29
29
  textColor && `--w-timeline-text-color: ${textColor};`,
30
30
  counter && `--w-timeline-counter: ${counter};`
31
- ])
31
+ ]))
32
32
  </script>
33
33
 
34
34
  <ul class={classes} style={styleVariables || null}>
@@ -4,13 +4,11 @@
4
4
  $leftOffset: calc(((25px + 4px) / 2) - 1px);
5
5
  $rightOffset: calc((((25px + 4px) / 2) - 1px) * -1);
6
6
 
7
- body {
8
- --w-timeline-color: var(--w-color-primary-50);
9
- --w-timeline-text-color: var(--w-color-primary);
10
- --w-timeline-counter: decimal;
11
- }
12
-
13
7
  .timeline {
8
+ --color: var(--w-timeline-color, var(--w-color-primary-50));
9
+ --text-color: var(--w-timeline-text-color, var(--w-color-primary));
10
+ --counter: var(--w-timeline-counter, decimal);
11
+
14
12
  @include layout(flex, default, column);
15
13
  @include spacing(pl-3xl, m0);
16
14
  @include position(relative);
@@ -22,7 +20,7 @@ body {
22
20
  &::before {
23
21
  @include position(absolute);
24
22
  @include size(w2px, 'h100%');
25
- @include background(var(--w-timeline-color));
23
+ @include background(var(--color));
26
24
 
27
25
  content: '';
28
26
  left: $leftOffset
@@ -34,7 +32,7 @@ body {
34
32
 
35
33
  &.stroke > li::before {
36
34
  @include background(primary-70);
37
- border: 2px solid var(--w-timeline-color);
35
+ border: 2px solid var(--color);
38
36
  }
39
37
  }
40
38
 
@@ -13,11 +13,11 @@
13
13
  children
14
14
  }: SvelteTimelineItemProps = $props()
15
15
 
16
- const classes = classNames([
16
+ const classes = $derived(classNames([
17
17
  styles.item,
18
18
  icon && styles['with-icon'],
19
19
  className
20
- ])
20
+ ]))
21
21
  </script>
22
22
 
23
23
  <li class={classes}>
@@ -8,14 +8,14 @@
8
8
  @include position(absolute, t-5px);
9
9
  @include size(25px);
10
10
  @include border-radius(max);
11
- @include background(var(--w-timeline-color));
11
+ @include background(var(--color));
12
12
  @include typography(md);
13
13
  @include layout(inline-flex, center);
14
14
  @include border(2px, primary-70);
15
15
 
16
- content: counter(item, var(--w-timeline-counter));
16
+ content: counter(item, var(--counter));
17
17
  counter-increment: item;
18
- color: var(--w-timeline-text-color);
18
+ color: var(--text-color);
19
19
  margin-left: -40px;
20
20
  }
21
21
 
@@ -25,7 +25,7 @@
25
25
  @include border(6px, primary-70);
26
26
  @include layout(flex);
27
27
 
28
- color: var(--w-timeline-text-color);
28
+ color: var(--text-color);
29
29
  margin-left: -40px;
30
30
  margin-top: -4px;
31
31