@celar-ui/svelte 1.8.1 → 2.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 (101) hide show
  1. package/dist/buttons/BaseButton.svelte +0 -2
  2. package/dist/buttons/BaseButton.svelte.d.ts +0 -1
  3. package/dist/buttons/ElevatedButton.svelte +1 -3
  4. package/dist/buttons/ElevatedButton.svelte.d.ts +1 -1
  5. package/dist/buttons/ExpandedTextButton.svelte +2 -2
  6. package/dist/buttons/ExpandedTextButton.svelte.d.ts +1 -1
  7. package/dist/buttons/FilledButton.svelte +1 -2
  8. package/dist/buttons/FilledButton.svelte.d.ts +1 -1
  9. package/dist/buttons/IconButton.svelte +1 -1
  10. package/dist/buttons/IconButton.svelte.d.ts +1 -1
  11. package/dist/buttons/OutlinedButton.svelte +1 -3
  12. package/dist/buttons/OutlinedButton.svelte.d.ts +1 -1
  13. package/dist/buttons/TextBaseButton.svelte +15 -46
  14. package/dist/buttons/TextButton.svelte +1 -3
  15. package/dist/buttons/TextButton.svelte.d.ts +1 -1
  16. package/dist/buttons/styles/button_utils.css +37 -0
  17. package/dist/buttons/styles/elevated_button.css +19 -0
  18. package/dist/buttons/styles/expanded_text_button.css +23 -0
  19. package/dist/buttons/styles/filled_button.css +21 -0
  20. package/dist/buttons/styles/icon_button.css +42 -0
  21. package/dist/buttons/styles/outlined_button.css +21 -0
  22. package/dist/buttons/styles/text_button.css +22 -0
  23. package/dist/containment/Avatar.svelte +1 -1
  24. package/dist/containment/Avatar.svelte.d.ts +1 -1
  25. package/dist/containment/Breadcrumb.svelte +1 -23
  26. package/dist/containment/Breadcrumb.svelte.d.ts +1 -0
  27. package/dist/containment/Card.svelte +1 -1
  28. package/dist/containment/Card.svelte.d.ts +1 -1
  29. package/dist/containment/Container.svelte +1 -1
  30. package/dist/containment/Container.svelte.d.ts +1 -1
  31. package/dist/containment/Spacer.svelte +17 -11
  32. package/dist/containment/SurfaceContainer.svelte +1 -1
  33. package/dist/containment/SurfaceContainer.svelte.d.ts +1 -1
  34. package/dist/containment/styles/avatar.css +20 -0
  35. package/dist/containment/styles/breadcrumb.css +27 -0
  36. package/dist/containment/styles/card.css +7 -0
  37. package/dist/containment/styles/container.css +26 -0
  38. package/dist/containment/styles/surface-container.css +29 -0
  39. package/dist/inputs/Checkbox.svelte +43 -45
  40. package/dist/inputs/ColorInput.svelte +63 -51
  41. package/dist/inputs/FileInput.svelte +39 -30
  42. package/dist/inputs/RadioGroup.svelte +1 -2
  43. package/dist/inputs/RadioGroup.svelte.d.ts +1 -1
  44. package/dist/inputs/RadioItem.svelte +38 -36
  45. package/dist/inputs/Slider.svelte +78 -86
  46. package/dist/inputs/Switch.svelte +49 -54
  47. package/dist/inputs/TagInput.svelte +77 -67
  48. package/dist/inputs/TextInput.svelte +83 -76
  49. package/dist/inputs/styles/radio_group.css +6 -0
  50. package/dist/misc/Badge.svelte +48 -40
  51. package/dist/misc/DotSpinner.svelte +8 -4
  52. package/dist/misc/DuckSpinner.svelte +92 -70
  53. package/dist/misc/Gap.svelte +12 -6
  54. package/dist/misc/LinearProgressIndicator.svelte +38 -29
  55. package/dist/navigation/AdaptiveSidebar.svelte +64 -71
  56. package/dist/navigation/AdaptiveSidebar.svelte.d.ts +1 -1
  57. package/dist/navigation/AppBar.svelte +39 -32
  58. package/dist/navigation/NavigationBar.svelte +27 -35
  59. package/dist/navigation/NavigationBarButton.svelte +42 -33
  60. package/dist/navigation/NavigationDrawer.svelte +1 -82
  61. package/dist/navigation/NavigationDrawer.svelte.d.ts +1 -0
  62. package/dist/navigation/styles/navigation_drawer.css +93 -0
  63. package/dist/overlay/CommandDialog.svelte +1 -1
  64. package/dist/overlay/CommandDialog.svelte.d.ts +1 -1
  65. package/dist/overlay/Dialog.svelte +1 -1
  66. package/dist/overlay/Dialog.svelte.d.ts +1 -1
  67. package/dist/overlay/MinimalDialog.svelte +1 -1
  68. package/dist/overlay/MinimalDialog.svelte.d.ts +1 -1
  69. package/dist/overlay/MinimalSurfaceDialog.svelte +3 -3
  70. package/dist/overlay/MinimalSurfaceDialog.svelte.d.ts +3 -3
  71. package/dist/overlay/Popover.svelte +1 -1
  72. package/dist/overlay/Popover.svelte.d.ts +1 -1
  73. package/dist/overlay/styles/command.css +125 -0
  74. package/dist/overlay/styles/dialog.css +64 -0
  75. package/dist/overlay/styles/popover.css +9 -0
  76. package/dist/overlay/styles/surface-dialog.css +21 -0
  77. package/package.json +23 -21
  78. package/src/styles/index.css +6 -0
  79. package/src/styles/theme.css +94 -0
  80. package/dist/buttons/styles/base_button.scss +0 -30
  81. package/dist/buttons/styles/elevated_button.scss +0 -20
  82. package/dist/buttons/styles/expanded_text_button.scss +0 -20
  83. package/dist/buttons/styles/filled_button.scss +0 -17
  84. package/dist/buttons/styles/icon_button.scss +0 -38
  85. package/dist/buttons/styles/outlined_button.scss +0 -18
  86. package/dist/buttons/styles/text_button.scss +0 -17
  87. package/dist/containment/styles/avatar.scss +0 -16
  88. package/dist/containment/styles/card.scss +0 -3
  89. package/dist/containment/styles/container.scss +0 -22
  90. package/dist/containment/styles/surface-container.scss +0 -27
  91. package/dist/inputs/styles/radio_group.scss +0 -3
  92. package/dist/overlay/styles/command.scss +0 -121
  93. package/dist/overlay/styles/dialog.scss +0 -69
  94. package/dist/overlay/styles/popover.scss +0 -5
  95. package/dist/overlay/styles/surface-dialog.scss +0 -17
  96. package/src/styles/colors.scss +0 -43
  97. package/src/styles/config.scss +0 -1
  98. package/src/styles/misc.scss +0 -15
  99. package/src/styles/scheme.scss +0 -80
  100. package/src/styles/spacing.scss +0 -23
  101. package/src/styles/utils.scss +0 -27
@@ -7,32 +7,41 @@
7
7
  <div data-linear-progress-indicator-line></div>
8
8
  </div>
9
9
 
10
- <style>[data-linear-progress-indicator] {
11
- --line-height: var(--gap--sm);
12
- --anim-duration: 1.7s;
13
- display: block;
14
- position: relative;
15
- background-color: var(--color-surfaceDim);
16
- width: 100%;
17
- height: var(--line-height);
18
- overflow: hidden;
19
- }
20
- [data-linear-progress-indicator] [data-linear-progress-indicator-line] {
21
- position: absolute;
22
- top: 0;
23
- left: 0;
24
- animation: linear-progress-animation var(--anim-duration) linear infinite;
25
- background-color: var(--color-primary);
26
- width: 0;
27
- height: 100%;
28
- }
29
- @keyframes linear-progress-animation {
30
- 0% {
31
- left: -8%;
32
- width: 8%;
33
- }
34
- 100% {
35
- left: 100%;
36
- width: 100%;
37
- }
38
- }</style>
10
+ <style>
11
+ @reference '$style/index.css';
12
+
13
+ @layer components {
14
+ [data-linear-progress-indicator] {
15
+ --line-height: --spacing(1.5);
16
+ --anim-duration: 1.7s;
17
+
18
+ display: block;
19
+ position: relative;
20
+ background-color: var(--color-surfaceDim);
21
+ width: 100%;
22
+ height: var(--line-height);
23
+ overflow: hidden;
24
+
25
+ [data-linear-progress-indicator-line] {
26
+ position: absolute;
27
+ top: 0;
28
+ left: 0;
29
+ animation: linear-progress-animation var(--anim-duration) linear infinite;
30
+ background-color: var(--color-primary);
31
+ width: 0;
32
+ height: 100%;
33
+ }
34
+
35
+ @keyframes linear-progress-animation {
36
+ 0% {
37
+ left: -8%;
38
+ width: 8%;
39
+ }
40
+ 100% {
41
+ left: 100%;
42
+ width: 100%;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ </style>
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import '../containment/styles/surface-container.scss';
2
+ import '../containment/styles/surface-container.css';
3
3
  import type { HTMLAttributes } from 'svelte/elements';
4
4
 
5
5
  interface AdaptiveSidebarProps extends HTMLAttributes<HTMLElement> {
@@ -46,77 +46,70 @@
46
46
  </aside>
47
47
  </div>
48
48
 
49
- <style>:root {
50
- --gap--x3: 3rem;
51
- --gap--x2: 2rem;
52
- --gap: 1rem;
53
- --gap--md: 0.7rem;
54
- --gap--half: 0.5rem;
55
- --gap--sm: 0.3rem;
56
- --gap--xs: 0.1rem;
57
- --break--xs: 540px;
58
- --break--sm: 960px;
59
- --break--md: 1320px;
60
- }
49
+ <style>
50
+ @reference '$style/index.css';
61
51
 
62
- [data-adaptive-sidebar-backdrop] {
63
- position: fixed;
64
- top: 0;
65
- left: 0;
66
- width: 100%;
67
- height: 100%;
68
- -webkit-backdrop-filter: blur(var(--blur-length));
69
- backdrop-filter: blur(var(--blur-length));
70
- background-color: rgba(var(--color-onBackground--rgb), 0.2);
71
- z-index: 100;
72
- visibility: hidden;
73
- opacity: 0;
74
- transition-property: opacity, visibility;
75
- transition-timing-function: ease-in;
76
- transition-duration: var(--transition-dur);
77
- }
52
+ @layer components {
53
+ [data-adaptive-sidebar-backdrop] {
54
+ @apply bg-onBackground/20 blur-md transition-all;
55
+ position: fixed;
56
+ top: 0;
57
+ left: 0;
58
+ width: 100%;
59
+ height: 100%;
60
+ z-index: 100;
61
+ visibility: hidden;
62
+ opacity: 0;
63
+ }
78
64
 
79
- [data-adaptive-sidebar] {
80
- box-sizing: border-box;
81
- z-index: 100;
82
- position: relative;
83
- height: 100vh;
84
- width: var(--expanded);
85
- padding: var(--gap);
86
- border-radius: 0 var(--gap--x2) var(--gap--x2) 0;
87
- max-width: 80vw;
88
- overflow: hidden;
89
- transition-property: transform, width, opacity, visibility;
90
- transition-timing-function: ease-in-out;
91
- transition-duration: var(--transition-dur);
92
- }
65
+ [data-adaptive-sidebar] {
66
+ @apply shadow-lg transition-all;
67
+ box-sizing: border-box;
68
+ z-index: 100;
69
+ height: 100vh;
70
+ width: var(--expanded);
71
+ padding: --spacing(4);
72
+ border-radius: 0 --spacing(8) --spacing(8) 0;
73
+ max-width: 80vw;
74
+ overflow: hidden;
75
+ position: fixed;
76
+ top: 0;
77
+ left: 0;
78
+ transform: translateX(-100%);
79
+ opacity: 0;
80
+ visibility: hidden;
93
81
 
94
- [data-adaptive-sidebar-state] {
95
- display: none;
96
- }
82
+ @variant sm {
83
+ position: relative;
84
+ opacity: 1;
85
+ visibility: visible;
86
+ width: var(--width);
87
+ transform: initial;
88
+ }
89
+ }
97
90
 
98
- @media screen and (max-width: 540px) {
99
- [data-adaptive-sidebar] {
100
- position: fixed;
101
- top: 0;
102
- left: 0;
103
- box-shadow: 0 0rem var(--gap) var(--color-shadow--md);
104
- transform: translateX(-100%);
105
- opacity: 0;
106
- visibility: hidden;
107
- }
108
- [data-adaptive-sidebar-state]:checked ~ [data-adaptive-sidebar-backdrop] {
109
- opacity: 1;
110
- visibility: visible;
111
- }
112
- [data-adaptive-sidebar-state]:checked ~ [data-adaptive-sidebar] {
113
- transform: translateX(0);
114
- opacity: 1;
115
- visibility: visible;
116
- }
117
- }
118
- @media screen and (min-width: 541px) {
119
- [data-adaptive-sidebar] {
120
- width: var(--width);
121
- }
122
- }</style>
91
+ [data-adaptive-sidebar-state] {
92
+ display: none;
93
+ }
94
+
95
+ [data-adaptive-sidebar-state]:checked {
96
+ ~ [data-adaptive-sidebar-backdrop] {
97
+ opacity: 1;
98
+ visibility: visible;
99
+ }
100
+
101
+ ~ [data-adaptive-sidebar] {
102
+ transform: translateX(0);
103
+ opacity: 1;
104
+ visibility: visible;
105
+ }
106
+
107
+ @variant sm {
108
+ ~ [data-adaptive-sidebar-backdrop] {
109
+ opacity: 0;
110
+ visibility: hidden;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ </style>
@@ -1,4 +1,4 @@
1
- import '../containment/styles/surface-container.scss';
1
+ import '../containment/styles/surface-container.css';
2
2
  import type { HTMLAttributes } from 'svelte/elements';
3
3
  interface AdaptiveSidebarProps extends HTMLAttributes<HTMLElement> {
4
4
  open?: boolean;
@@ -27,35 +27,42 @@
27
27
  </div>
28
28
  </section>
29
29
 
30
- <style>[data-app-bar] {
31
- box-sizing: border-box;
32
- display: flex;
33
- position: relative;
34
- justify-content: space-between;
35
- align-items: center;
36
- gap: var(--gap--half);
37
- -webkit-backdrop-filter: blur(var(--blur-length--x2));
38
- backdrop-filter: blur(var(--blur-length--x2));
39
- background-color: rgba(var(--color-background--rgb), 0.88);
40
- padding: 0 var(--gap--half);
41
- min-height: var(--gap--x3);
42
- }
43
- [data-app-bar] [data-app-bar-left] {
44
- display: flex;
45
- align-items: center;
46
- gap: var(--gap--half);
47
- overflow: hidden;
48
- }
49
- [data-app-bar] [data-app-bar-left] [data-app-bar-title] {
50
- flex: 1;
51
- overflow: hidden;
52
- font-weight: bold;
53
- font-size: 1.1rem;
54
- text-overflow: ellipsis;
55
- white-space: nowrap;
56
- }
57
- [data-app-bar] [data-app-bar-actions] {
58
- display: flex;
59
- align-items: center;
60
- gap: var(--gap--sm);
61
- }</style>
30
+ <style>
31
+ @reference '$style/index.css';
32
+
33
+ @layer components {
34
+ [data-app-bar] {
35
+ @apply bg-background/88 backdrop-blur;
36
+ box-sizing: border-box;
37
+ display: flex;
38
+ position: relative;
39
+ justify-content: space-between;
40
+ align-items: center;
41
+ gap: --spacing(2);
42
+ padding: 0 --spacing(2);
43
+ min-height: --spacing(12);
44
+
45
+ [data-app-bar-left] {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: var(--gap--half);
49
+ overflow: hidden;
50
+
51
+ [data-app-bar-title] {
52
+ flex: 1;
53
+ overflow: hidden;
54
+ font-weight: bold;
55
+ font-size: 1.1rem;
56
+ text-overflow: ellipsis;
57
+ white-space: nowrap;
58
+ }
59
+ }
60
+
61
+ [data-app-bar-actions] {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: --spacing(1.5);
65
+ }
66
+ }
67
+ }
68
+ </style>
@@ -8,39 +8,31 @@
8
8
  {@render children?.()}
9
9
  </section>
10
10
 
11
- <style>:root {
12
- --gap--x3: 3rem;
13
- --gap--x2: 2rem;
14
- --gap: 1rem;
15
- --gap--md: 0.7rem;
16
- --gap--half: 0.5rem;
17
- --gap--sm: 0.3rem;
18
- --gap--xs: 0.1rem;
19
- --break--xs: 540px;
20
- --break--sm: 960px;
21
- --break--md: 1320px;
22
- }
11
+ <style>
12
+ @reference '$style/index.css';
23
13
 
24
- [data-navigation-bar] {
25
- box-sizing: border-box;
26
- display: flex;
27
- position: relative;
28
- justify-content: space-evenly;
29
- border-top-right-radius: var(--radius);
30
- border-top-left-radius: var(--radius);
31
- background-color: var(--color-surfaceContainerLow);
32
- width: 100%;
33
- height: auto;
34
- }
35
- @media screen and (min-width: 540px) {
36
- [data-navigation-bar] {
37
- flex-direction: column;
38
- justify-content: flex-start;
39
- border-top-left-radius: 0;
40
- border-bottom-right-radius: var(--radius);
41
- padding: 0 var(--gap--half);
42
- width: -moz-min-content;
43
- width: min-content;
44
- height: 100%;
45
- }
46
- }</style>
14
+ @layer components {
15
+ [data-navigation-bar] {
16
+ box-sizing: border-box;
17
+ display: flex;
18
+ position: relative;
19
+ justify-content: space-evenly;
20
+ border-top-right-radius: var(--radius-2xl);
21
+ border-top-left-radius: var(--radius-2xl);
22
+ background-color: var(--color-surfaceContainerLow);
23
+ width: 100%;
24
+ height: auto;
25
+
26
+ @variant sm {
27
+ flex-direction: column;
28
+ justify-content: flex-start;
29
+ border-top-left-radius: 0;
30
+ border-bottom-right-radius: var(--radius);
31
+ padding: 0 --spacing(2);
32
+ width: -moz-min-content;
33
+ width: min-content;
34
+ height: 100%;
35
+ }
36
+ }
37
+ }
38
+ </style>
@@ -23,36 +23,45 @@
23
23
  {@render children?.()}
24
24
  </a>
25
25
 
26
- <style>[data-navigation-bar-button] {
27
- box-sizing: border-box;
28
- display: flex;
29
- flex-direction: column;
30
- justify-content: flex-start;
31
- align-items: center;
32
- gap: var(--gap--xs);
33
- background-color: transparent;
34
- padding: var(--gap--half) 0;
35
- width: 100%;
36
- color: var(--color-onSurface);
37
- text-align: center;
38
- font-size: 0.8rem;
39
- text-decoration: none;
40
- -webkit-tap-highlight-color: transparent;
41
- }
42
- [data-navigation-bar-button]:not(:disabled):active {
43
- top: 0;
44
- }
45
- [data-navigation-bar-button]:hover > [data-navigation-bar-button-icon] {
46
- background-color: var(--color-primaryContainer);
47
- }
48
- [data-navigation-bar-button][data-active=true] > [data-navigation-bar-button-icon] {
49
- background-color: var(--color-inversePrimary);
50
- }
51
- [data-navigation-bar-button] > [data-navigation-bar-button-icon] {
52
- transition-duration: var(--transition-dur);
53
- transition-property: color, background-color;
54
- transition-timing-function: ease-in;
55
- border-radius: var(--radius);
56
- background-color: transparent;
57
- padding: var(--gap--xs) var(--gap);
58
- }</style>
26
+ <style>
27
+ @reference '$style/index.css';
28
+
29
+ @layer components {
30
+ [data-navigation-bar-button] {
31
+ box-sizing: border-box;
32
+ display: flex;
33
+ flex-direction: column;
34
+ justify-content: flex-start;
35
+ align-items: center;
36
+ gap: --spacing(1);
37
+ background-color: transparent;
38
+ padding: --spacing(2) 0;
39
+ width: 100%;
40
+ color: var(--color-onSurface);
41
+ text-align: center;
42
+ font-size: 0.8rem;
43
+ text-decoration: none;
44
+ -webkit-tap-highlight-color: transparent;
45
+
46
+ &:not(:disabled):active {
47
+ top: 0;
48
+ }
49
+
50
+ &:hover {
51
+ & > [data-navigation-bar-button-icon] {
52
+ background-color: var(--color-primaryContainer);
53
+ }
54
+ }
55
+
56
+ &[data-active='true'] {
57
+ & > [data-navigation-bar-button-icon] {
58
+ background-color: var(--color-inversePrimary);
59
+ }
60
+ }
61
+
62
+ & > [data-navigation-bar-button-icon] {
63
+ @apply rounded-2xl bg-transparent px-4 py-1 transition-all;
64
+ }
65
+ }
66
+ }
67
+ </style>
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import './styles/navigation_drawer.css';
2
3
  import { fade, fly } from 'svelte/transition';
3
4
  import { Dialog as BitDialog, type DialogRootProps } from 'bits-ui';
4
5
  import type { Snippet } from 'svelte';
@@ -79,85 +80,3 @@
79
80
  </BitDialog.Content>
80
81
  </BitDialog.Portal>
81
82
  </BitDialog.Root>
82
-
83
- <style>:global([data-navigation-drawer-backdrop]) {
84
- position: fixed;
85
- top: 0;
86
- left: 0;
87
- width: 100%;
88
- height: 100%;
89
- -webkit-backdrop-filter: blur(var(--blur-length));
90
- backdrop-filter: blur(var(--blur-length));
91
- background-color: rgba(var(--color-onBackground--rgb), 0.2);
92
- z-index: 100;
93
- }
94
-
95
- :global([data-navigation-drawer]) {
96
- box-sizing: border-box;
97
- display: flex;
98
- position: fixed;
99
- top: 0;
100
- z-index: 100;
101
- flex-direction: column;
102
- background-color: var(--color-surface);
103
- height: 100dvh;
104
- overflow-y: auto;
105
- box-shadow: 0 var(--gap--xs) var(--gap--half) var(--color-shadow--md);
106
- max-width: 85%;
107
- }
108
- :global([data-navigation-drawer])[data-position=left] {
109
- left: 0;
110
- border-top-right-radius: var(--radius);
111
- border-bottom-right-radius: var(--radius);
112
- }
113
- :global([data-navigation-drawer])[data-position=right] {
114
- right: 0;
115
- border-top-left-radius: var(--radius);
116
- border-bottom-left-radius: var(--radius);
117
- }
118
- :global([data-navigation-drawer]) [data-navigation-drawer-header] {
119
- display: flex;
120
- justify-content: space-between;
121
- align-items: center;
122
- border-bottom: 1px solid var(--color-border);
123
- padding: var(--gap);
124
- flex-shrink: 0;
125
- }
126
- :global([data-navigation-drawer]) [data-navigation-drawer-header] [data-navigation-drawer-close] {
127
- margin-left: auto;
128
- }
129
- :global([data-navigation-drawer]) [data-navigation-drawer-content] {
130
- flex: 1;
131
- overflow-y: auto;
132
- padding: var(--gap--half);
133
- }
134
- :global([data-navigation-drawer]) [data-navigation-drawer-footer] {
135
- border-top: 1px solid var(--color-border);
136
- padding: var(--gap);
137
- flex-shrink: 0;
138
- }
139
-
140
- /* Scrollbar styling */
141
- :global([data-navigation-drawer]) {
142
- scrollbar-width: thin;
143
- scrollbar-color: var(--color-border) transparent;
144
- }
145
- :global([data-navigation-drawer])::-webkit-scrollbar {
146
- width: 6px;
147
- }
148
- :global([data-navigation-drawer])::-webkit-scrollbar-track {
149
- background: transparent;
150
- }
151
- :global([data-navigation-drawer])::-webkit-scrollbar-thumb {
152
- border-radius: 3px;
153
- background-color: var(--color-border);
154
- }
155
- :global([data-navigation-drawer])::-webkit-scrollbar-thumb:hover {
156
- background-color: var(--color-primaryContainer);
157
- }
158
-
159
- /* Focus management */
160
- :global([data-navigation-drawer]:focus-visible) {
161
- outline: 2px solid var(--color-primary);
162
- outline-offset: -2px;
163
- }</style>
@@ -1,3 +1,4 @@
1
+ import './styles/navigation_drawer.css';
1
2
  import { type DialogRootProps } from 'bits-ui';
2
3
  import type { Snippet } from 'svelte';
3
4
  export interface NavigationDrawerProps extends DialogRootProps {
@@ -0,0 +1,93 @@
1
+ @reference '$style/index.css';
2
+
3
+ @layer components {
4
+ [data-navigation-drawer-backdrop] {
5
+ @apply bg-onBackground/20 backdrop-blur;
6
+ position: fixed;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ height: 100%;
11
+ z-index: 100;
12
+ }
13
+
14
+ [data-navigation-drawer] {
15
+ @apply shadow-lg;
16
+ box-sizing: border-box;
17
+ display: flex;
18
+ position: fixed;
19
+ top: 0;
20
+ z-index: 100;
21
+ flex-direction: column;
22
+ background-color: var(--color-surface);
23
+ height: 100dvh;
24
+ overflow-y: auto;
25
+ max-width: 85%;
26
+
27
+ &[data-position='left'] {
28
+ left: 0;
29
+ border-top-right-radius: var(--radius-2xl);
30
+ border-bottom-right-radius: var(--radius-2xl);
31
+ }
32
+
33
+ &[data-position='right'] {
34
+ right: 0;
35
+ border-top-left-radius: var(--radius-2xl);
36
+ border-bottom-left-radius: var(--radius-2xl);
37
+ }
38
+
39
+ [data-navigation-drawer-header] {
40
+ display: flex;
41
+ justify-content: space-between;
42
+ align-items: center;
43
+ border-bottom: 1px solid --alpha(var(--color-onBackground) / 20%);
44
+ padding: --spacing(4);
45
+ flex-shrink: 0;
46
+
47
+ [data-navigation-drawer-close] {
48
+ margin-left: auto;
49
+ }
50
+ }
51
+
52
+ [data-navigation-drawer-content] {
53
+ flex: 1;
54
+ overflow-y: auto;
55
+ padding: --spacing(2);
56
+ }
57
+
58
+ [data-navigation-drawer-footer] {
59
+ border-top: 1px solid --alpha(var(--color-onBackground) / 20%);
60
+ padding: --spacing(4);
61
+ flex-shrink: 0;
62
+ }
63
+ }
64
+
65
+ /* Scrollbar styling */
66
+ [data-navigation-drawer] {
67
+ scrollbar-width: thin;
68
+ scrollbar-color: --alpha(var(--color-onBackground) / 20%) transparent;
69
+
70
+ &::-webkit-scrollbar {
71
+ width: 6px;
72
+ }
73
+
74
+ &::-webkit-scrollbar-track {
75
+ background: transparent;
76
+ }
77
+
78
+ &::-webkit-scrollbar-thumb {
79
+ border-radius: 3px;
80
+ background-color: --alpha(var(--color-onBackground) / 20%);
81
+ }
82
+
83
+ &::-webkit-scrollbar-thumb:hover {
84
+ background-color: var(--color-primaryContainer);
85
+ }
86
+ }
87
+
88
+ /* Focus management */
89
+ [data-navigation-drawer]:focus-visible {
90
+ outline: 2px solid var(--color-primary);
91
+ outline-offset: -2px;
92
+ }
93
+ }
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import './styles/command.scss';
2
+ import './styles/command.css';
3
3
  import { Command } from 'bits-ui';
4
4
  import { default as MinimalDialog, type MinimalDialogProps } from './MinimalDialog.svelte';
5
5
  import type { Snippet } from 'svelte';
@@ -1,4 +1,4 @@
1
- import './styles/command.scss';
1
+ import './styles/command.css';
2
2
  import { type MinimalDialogProps } from './MinimalDialog.svelte';
3
3
  import type { Snippet } from 'svelte';
4
4
  type CommandDialogProps = MinimalDialogProps & {
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import './styles/dialog.scss';
2
+ import './styles/dialog.css';
3
3
  import { fade, fly } from 'svelte/transition';
4
4
  import { Dialog as BitDialog, type DialogContentProps } from 'bits-ui';
5
5
  import type { Snippet } from 'svelte';
@@ -1,4 +1,4 @@
1
- import './styles/dialog.scss';
1
+ import './styles/dialog.css';
2
2
  import { type DialogContentProps } from 'bits-ui';
3
3
  import type { Snippet } from 'svelte';
4
4
  export type DialogProps = Omit<DialogContentProps, 'title'> & {