@celar-ui/svelte 1.8.2 → 2.0.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.
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 +16 -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 +45 -45
  40. package/dist/inputs/ColorInput.svelte +61 -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 +36 -36
  45. package/dist/inputs/Slider.svelte +77 -86
  46. package/dist/inputs/Switch.svelte +47 -54
  47. package/dist/inputs/TagInput.svelte +72 -67
  48. package/dist/inputs/TextInput.svelte +72 -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 -70
  56. package/dist/navigation/AdaptiveSidebar.svelte.d.ts +1 -1
  57. package/dist/navigation/AppBar.svelte +39 -31
  58. package/dist/navigation/NavigationBar.svelte +26 -35
  59. package/dist/navigation/NavigationBarButton.svelte +42 -33
  60. package/dist/navigation/NavigationDrawer.svelte +1 -81
  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 +124 -0
  74. package/dist/overlay/styles/dialog.css +65 -0
  75. package/dist/overlay/styles/popover.css +9 -0
  76. package/dist/overlay/styles/surface-dialog.css +21 -0
  77. package/package.json +18 -18
  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
+
36
+ @keyframes linear-progress-animation {
37
+ 0% {
38
+ left: -8%;
39
+ width: 8%;
40
+ }
41
+ 100% {
42
+ left: 100%;
43
+ width: 100%;
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,76 +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
- backdrop-filter: blur(var(--blur-length));
69
- background-color: rgba(var(--color-onBackground--rgb), 0.2);
70
- z-index: 100;
71
- visibility: hidden;
72
- opacity: 0;
73
- transition-property: opacity, visibility;
74
- transition-timing-function: ease-in;
75
- transition-duration: var(--transition-dur);
76
- }
52
+ @layer components {
53
+ [data-adaptive-sidebar-backdrop] {
54
+ @apply bg-onBackground/20 backdrop-blur 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
+ }
77
64
 
78
- [data-adaptive-sidebar] {
79
- box-sizing: border-box;
80
- z-index: 100;
81
- position: relative;
82
- height: 100vh;
83
- width: var(--expanded);
84
- padding: var(--gap);
85
- border-radius: 0 var(--gap--x2) var(--gap--x2) 0;
86
- max-width: 80vw;
87
- overflow: hidden;
88
- transition-property: transform, width, opacity, visibility;
89
- transition-timing-function: ease-in-out;
90
- transition-duration: var(--transition-dur);
91
- }
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;
92
81
 
93
- [data-adaptive-sidebar-state] {
94
- display: none;
95
- }
82
+ @variant sm {
83
+ position: relative;
84
+ opacity: 1;
85
+ visibility: visible;
86
+ width: var(--width);
87
+ transform: initial;
88
+ }
89
+ }
96
90
 
97
- @media screen and (max-width: 540px) {
98
- [data-adaptive-sidebar] {
99
- position: fixed;
100
- top: 0;
101
- left: 0;
102
- box-shadow: 0 0rem var(--gap) var(--color-shadow--md);
103
- transform: translateX(-100%);
104
- opacity: 0;
105
- visibility: hidden;
106
- }
107
- [data-adaptive-sidebar-state]:checked ~ [data-adaptive-sidebar-backdrop] {
108
- opacity: 1;
109
- visibility: visible;
110
- }
111
- [data-adaptive-sidebar-state]:checked ~ [data-adaptive-sidebar] {
112
- transform: translateX(0);
113
- opacity: 1;
114
- visibility: visible;
115
- }
116
- }
117
- @media screen and (min-width: 541px) {
118
- [data-adaptive-sidebar] {
119
- width: var(--width);
120
- }
121
- }</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,34 +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
- backdrop-filter: blur(var(--blur-length--x2));
38
- background-color: rgba(var(--color-background--rgb), 0.88);
39
- padding: 0 var(--gap--half);
40
- min-height: var(--gap--x3);
41
- }
42
- [data-app-bar] [data-app-bar-left] {
43
- display: flex;
44
- align-items: center;
45
- gap: var(--gap--half);
46
- overflow: hidden;
47
- }
48
- [data-app-bar] [data-app-bar-left] [data-app-bar-title] {
49
- flex: 1;
50
- overflow: hidden;
51
- font-weight: bold;
52
- font-size: 1.1rem;
53
- text-overflow: ellipsis;
54
- white-space: nowrap;
55
- }
56
- [data-app-bar] [data-app-bar-actions] {
57
- display: flex;
58
- align-items: center;
59
- gap: var(--gap--sm);
60
- }</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: --spacing(2);
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,30 @@
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: min-content;
33
+ height: 100%;
34
+ }
35
+ }
36
+ }
37
+ </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,84 +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
- backdrop-filter: blur(var(--blur-length));
90
- background-color: rgba(var(--color-onBackground--rgb), 0.2);
91
- z-index: 100;
92
- }
93
-
94
- :global([data-navigation-drawer]) {
95
- box-sizing: border-box;
96
- display: flex;
97
- position: fixed;
98
- top: 0;
99
- z-index: 100;
100
- flex-direction: column;
101
- background-color: var(--color-surface);
102
- height: 100dvh;
103
- overflow-y: auto;
104
- box-shadow: 0 var(--gap--xs) var(--gap--half) var(--color-shadow--md);
105
- max-width: 85%;
106
- }
107
- :global([data-navigation-drawer])[data-position=left] {
108
- left: 0;
109
- border-top-right-radius: var(--radius);
110
- border-bottom-right-radius: var(--radius);
111
- }
112
- :global([data-navigation-drawer])[data-position=right] {
113
- right: 0;
114
- border-top-left-radius: var(--radius);
115
- border-bottom-left-radius: var(--radius);
116
- }
117
- :global([data-navigation-drawer]) [data-navigation-drawer-header] {
118
- display: flex;
119
- justify-content: space-between;
120
- align-items: center;
121
- border-bottom: 1px solid var(--color-border);
122
- padding: var(--gap);
123
- flex-shrink: 0;
124
- }
125
- :global([data-navigation-drawer]) [data-navigation-drawer-header] [data-navigation-drawer-close] {
126
- margin-left: auto;
127
- }
128
- :global([data-navigation-drawer]) [data-navigation-drawer-content] {
129
- flex: 1;
130
- overflow-y: auto;
131
- padding: var(--gap--half);
132
- }
133
- :global([data-navigation-drawer]) [data-navigation-drawer-footer] {
134
- border-top: 1px solid var(--color-border);
135
- padding: var(--gap);
136
- flex-shrink: 0;
137
- }
138
-
139
- /* Scrollbar styling */
140
- :global([data-navigation-drawer]) {
141
- scrollbar-width: thin;
142
- scrollbar-color: var(--color-border) transparent;
143
- }
144
- :global([data-navigation-drawer])::-webkit-scrollbar {
145
- width: 6px;
146
- }
147
- :global([data-navigation-drawer])::-webkit-scrollbar-track {
148
- background: transparent;
149
- }
150
- :global([data-navigation-drawer])::-webkit-scrollbar-thumb {
151
- border-radius: 3px;
152
- background-color: var(--color-border);
153
- }
154
- :global([data-navigation-drawer])::-webkit-scrollbar-thumb:hover {
155
- background-color: var(--color-primaryContainer);
156
- }
157
-
158
- /* Focus management */
159
- :global([data-navigation-drawer]:focus-visible) {
160
- outline: 2px solid var(--color-primary);
161
- outline-offset: -2px;
162
- }</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'> & {
@@ -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';