@sveltia/ui 0.42.0 → 0.43.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 (74) hide show
  1. package/dist/components/alert/alert.svelte +30 -36
  2. package/dist/components/alert/infobar.svelte +45 -55
  3. package/dist/components/bottom-navigation/bottom-navigation.svelte +15 -21
  4. package/dist/components/button/button-group.svelte +5 -7
  5. package/dist/components/button/button.svelte +175 -274
  6. package/dist/components/button/floating-action-button-wrapper.svelte +18 -23
  7. package/dist/components/button/select-button-group.svelte +41 -57
  8. package/dist/components/button/split-button.svelte +18 -25
  9. package/dist/components/calendar/calendar.svelte +80 -103
  10. package/dist/components/checkbox/checkbox-group.svelte +19 -22
  11. package/dist/components/checkbox/checkbox.svelte +63 -91
  12. package/dist/components/dialog/dialog.svelte +87 -105
  13. package/dist/components/dialog/prompt-dialog.svelte +3 -5
  14. package/dist/components/disclosure/disclosure.svelte +21 -34
  15. package/dist/components/divider/divider.svelte +14 -18
  16. package/dist/components/divider/spacer.svelte +8 -13
  17. package/dist/components/drawer/drawer.svelte +190 -343
  18. package/dist/components/grid/grid-body.svelte +14 -16
  19. package/dist/components/grid/grid-cell.svelte +3 -5
  20. package/dist/components/grid/grid-col-header.svelte +3 -5
  21. package/dist/components/grid/grid-foot.svelte +3 -5
  22. package/dist/components/grid/grid-head.svelte +3 -5
  23. package/dist/components/grid/grid-row-header.svelte +4 -6
  24. package/dist/components/grid/grid-row.svelte +4 -6
  25. package/dist/components/grid/grid.svelte +12 -18
  26. package/dist/components/icon/icon.svelte +5 -7
  27. package/dist/components/listbox/listbox.svelte +61 -78
  28. package/dist/components/listbox/option-group.svelte +11 -15
  29. package/dist/components/listbox/option.svelte +39 -54
  30. package/dist/components/menu/menu-item-group.svelte +3 -5
  31. package/dist/components/menu/menu-item.svelte +51 -67
  32. package/dist/components/menu/menu.svelte +17 -21
  33. package/dist/components/progressbar/progressbar.svelte +15 -24
  34. package/dist/components/radio/radio-group.svelte +31 -40
  35. package/dist/components/radio/radio.svelte +63 -81
  36. package/dist/components/resizable-pane/resizable-handle.svelte +48 -60
  37. package/dist/components/resizable-pane/resizable-pane-group.svelte +14 -18
  38. package/dist/components/select/combobox.svelte +112 -135
  39. package/dist/components/select/select-tags.svelte +57 -73
  40. package/dist/components/slider/slider.svelte +74 -94
  41. package/dist/components/switch/switch.svelte +81 -115
  42. package/dist/components/table/table-body.svelte +14 -16
  43. package/dist/components/table/table-cell.svelte +3 -5
  44. package/dist/components/table/table-col-header.svelte +3 -5
  45. package/dist/components/table/table-foot.svelte +3 -5
  46. package/dist/components/table/table-head.svelte +3 -5
  47. package/dist/components/table/table-row-header.svelte +4 -6
  48. package/dist/components/table/table-row.svelte +4 -6
  49. package/dist/components/table/table.svelte +12 -18
  50. package/dist/components/tabs/tab-box.svelte +6 -9
  51. package/dist/components/tabs/tab-list.svelte +73 -91
  52. package/dist/components/tabs/tab-panel.svelte +7 -11
  53. package/dist/components/tabs/tab-panels.svelte +14 -19
  54. package/dist/components/text-editor/code-editor.svelte +7 -10
  55. package/dist/components/text-editor/core.js +10 -7
  56. package/dist/components/text-editor/lexical-root.svelte +160 -221
  57. package/dist/components/text-editor/text-editor.svelte +18 -25
  58. package/dist/components/text-editor/toolbar/toolbar-wrapper.svelte +37 -44
  59. package/dist/components/text-field/number-input.svelte +68 -87
  60. package/dist/components/text-field/password-input.svelte +42 -52
  61. package/dist/components/text-field/search-bar.svelte +53 -64
  62. package/dist/components/text-field/secret-input.svelte +46 -61
  63. package/dist/components/text-field/text-area.svelte +68 -80
  64. package/dist/components/text-field/text-input.svelte +106 -138
  65. package/dist/components/toast/toast.svelte +89 -104
  66. package/dist/components/toolbar/toolbar.svelte +54 -70
  67. package/dist/components/typography/truncated-text.svelte +7 -9
  68. package/dist/components/util/app-shell.svelte +493 -40
  69. package/dist/components/util/empty-state.svelte +11 -13
  70. package/dist/components/util/group.svelte +3 -5
  71. package/dist/components/util/modal.svelte +48 -59
  72. package/dist/components/util/popup.svelte +67 -87
  73. package/dist/services/i18n.js +2 -2
  74. package/package.json +2 -2
@@ -131,224 +131,163 @@
131
131
  {hidden}
132
132
  ></div>
133
133
 
134
- <style lang="scss">
135
- .lexical-root {
136
- overflow: hidden;
137
- border: 1px solid var(--sui-textbox-border-color);
138
- border-radius: var(--sui-textbox-border-radius) !important;
139
- padding: var(--sui-textbox-multiline-padding);
140
- min-height: 8em;
141
- color: var(--sui-textbox-foreground-color);
142
- background-color: var(--sui-textbox-background-color);
143
- font-family: var(--sui-textbox-font-family);
144
- font-size: var(--sui-textbox-font-size);
145
- line-height: var(--sui-textbox-multiline-line-height);
146
-
147
- &:not(:first-child) {
148
- border-start-start-radius: 0 !important;
149
- border-start-end-radius: 0 !important;
150
- }
151
-
152
- &.code {
153
- padding: 0;
154
-
155
- :global {
156
- .code-block {
157
- border-radius: 0 !important;
158
- min-height: 120px;
159
- }
160
- }
161
- }
162
-
163
- &:focus-visible {
164
- outline: 0;
165
- }
166
-
167
- &[aria-invalid='true'] {
168
- border-color: var(--sui-error-border-color);
169
- }
170
-
171
- :global {
172
- // Remove the default margin on the first and last child elements of block nodes, including
173
- // paragraphs, headings, lists, and code blocks, but keep the default margin on other items,
174
- // including UI widgets like radio buttons, checkboxes, and select menus
175
- [dir] {
176
- &:first-child {
177
- margin-top: 0;
178
- }
179
-
180
- &:last-child {
181
- margin-bottom: 0;
182
- }
183
- }
184
-
185
- strong.italic {
186
- font-style: italic;
187
- }
188
-
189
- .strikethrough {
190
- text-decoration: line-through;
191
- }
192
-
193
- li.nested {
194
- list-style-type: none;
195
- }
196
-
197
- .code-block {
198
- position: relative;
199
- display: block;
200
- padding-block: 8px;
201
- padding-inline-start: 56px;
202
- padding-inline-end: 8px;
203
- background-color: var(--sui-code-background-color);
204
- overflow-x: auto;
205
- white-space: pre;
206
-
207
- &:not(:first-child) {
208
- margin-top: 1em;
209
- }
210
-
211
- &:not(:last-child) {
212
- margin-bottom: 1em;
213
- }
214
-
215
- &::before {
216
- position: absolute;
217
- inset-block: 0;
218
- inset-inline-start: 0;
219
- inset-inline-end: auto;
220
- content: attr(data-gutter);
221
- padding: 8px;
222
- min-width: 40px;
223
- color: var(--sui-tertiary-foreground-color);
224
- background-color: var(--sui-tertiary-background-color);
225
- text-align: end;
226
- }
227
- }
228
-
229
- [data-lexical-text='true'] {
230
- cursor: text;
231
- }
232
-
233
- :is(th, td) > p {
234
- margin: 0;
235
- white-space: normal;
236
- word-break: normal;
237
- }
238
-
239
- hr {
240
- margin: var(--sui-paragraph-margin) 0;
241
- border: none;
242
- padding: 0;
243
-
244
- &::after {
245
- display: block;
246
- height: 2px;
247
- background-color: var(--sui-control-border-color);
248
- line-height: 2px;
249
- content: '';
250
- }
251
- }
252
- }
253
- }
254
-
255
- // Part of the Default Prism theme
256
- :root[data-theme='light'] .lexical-root {
257
- :global {
258
- .token:is(.comment, .prolog, .doctype, .cdata) {
259
- color: slategray;
260
- }
261
-
262
- .token.punctuation {
263
- color: #999;
264
- }
265
-
266
- .token.namespace {
267
- opacity: 0.7;
268
- }
269
-
270
- .token:is(.property, .tag, .boolean, .number, .constant, .symbol, .deleted) {
271
- color: #905;
272
- }
273
-
274
- .token:is(.selector, .attr-name, .string, .char, .builtin, .inserted) {
275
- color: #690;
276
- }
277
-
278
- .token:is(.operator, .entity, .url),
279
- .language-css .token.string,
280
- .style .token.string {
281
- color: #9a6e3a;
282
- }
283
-
284
- .token:is(.atrule, .attr-value, .keyword) {
285
- color: #07a;
286
- }
287
-
288
- .token:is(.function, .class-name) {
289
- color: #dd4a68;
290
- }
291
-
292
- .token:is(.regex, .important, .variable) {
293
- color: #e90;
294
- }
295
- }
296
- }
297
-
298
- // Part of the Tomorrow Night Prism theme
299
- :root[data-theme='dark'] .lexical-root {
300
- :global {
301
- .token:is(.comment, .block-comment, .prolog, .doctype, .cdata) {
302
- color: #999;
303
- }
304
-
305
- .token.punctuation {
306
- color: #ccc;
307
- }
308
-
309
- .token:is(.tag, .attr-name, .namespace, .deleted) {
310
- color: #e2777a;
311
- }
312
-
313
- .token.function-name {
314
- color: #6196cc;
315
- }
316
-
317
- .token:is(.boolean, .number, .function) {
318
- color: #f08d49;
319
- }
320
-
321
- .token:is(.property, .class-name, .constant, .symbol) {
322
- color: #f8c555;
323
- }
324
-
325
- .token:is(.selector, .important, .atrule, .keyword, .builtin) {
326
- color: #cc99cd;
327
- }
328
-
329
- .token:is(.string, .char, .attr-value, .regex, .variable) {
330
- color: #7ec699;
331
- }
332
-
333
- .token:is(.operator, .entity, .url) {
334
- color: #67cdcc;
335
- }
336
-
337
- .token:is(.important, .bold) {
338
- font-weight: bold;
339
- }
340
-
341
- .token.italic {
342
- font-style: italic;
343
- }
344
-
345
- .token.entity {
346
- cursor: help;
347
- }
348
-
349
- .token.inserted {
350
- color: green;
351
- }
352
- }
353
- }
354
- </style>
134
+ <style>.lexical-root {
135
+ overflow: hidden;
136
+ border: 1px solid var(--sui-textbox-border-color);
137
+ border-radius: var(--sui-textbox-border-radius) !important;
138
+ padding: var(--sui-textbox-multiline-padding);
139
+ min-height: 8em;
140
+ color: var(--sui-textbox-foreground-color);
141
+ background-color: var(--sui-textbox-background-color);
142
+ font-family: var(--sui-textbox-font-family);
143
+ font-size: var(--sui-textbox-font-size);
144
+ line-height: var(--sui-textbox-multiline-line-height);
145
+ }
146
+ .lexical-root:not(:first-child) {
147
+ border-start-start-radius: 0 !important;
148
+ border-start-end-radius: 0 !important;
149
+ }
150
+ .lexical-root.code {
151
+ padding: 0;
152
+ }
153
+ .lexical-root.code :global(.code-block) {
154
+ border-radius: 0 !important;
155
+ min-height: 120px;
156
+ }
157
+ .lexical-root:focus-visible {
158
+ outline: 0;
159
+ }
160
+ .lexical-root[aria-invalid=true] {
161
+ border-color: var(--sui-error-border-color);
162
+ }
163
+ .lexical-root :global([dir]:first-child) {
164
+ margin-top: 0;
165
+ }
166
+ .lexical-root :global([dir]:last-child) {
167
+ margin-bottom: 0;
168
+ }
169
+ .lexical-root :global(strong.italic) {
170
+ font-style: italic;
171
+ }
172
+ .lexical-root :global(.strikethrough) {
173
+ text-decoration: line-through;
174
+ }
175
+ .lexical-root :global(li.nested) {
176
+ list-style-type: none;
177
+ }
178
+ .lexical-root :global(.code-block) {
179
+ position: relative;
180
+ display: block;
181
+ padding-block: 8px;
182
+ padding-inline-start: 56px;
183
+ padding-inline-end: 8px;
184
+ background-color: var(--sui-code-background-color);
185
+ overflow-x: auto;
186
+ white-space: pre;
187
+ }
188
+ .lexical-root :global(.code-block:not(:first-child)) {
189
+ margin-top: 1em;
190
+ }
191
+ .lexical-root :global(.code-block:not(:last-child)) {
192
+ margin-bottom: 1em;
193
+ }
194
+ .lexical-root :global(.code-block::before) {
195
+ position: absolute;
196
+ inset-block: 0;
197
+ inset-inline-start: 0;
198
+ inset-inline-end: auto;
199
+ content: attr(data-gutter);
200
+ padding: 8px;
201
+ min-width: 40px;
202
+ color: var(--sui-tertiary-foreground-color);
203
+ background-color: var(--sui-tertiary-background-color);
204
+ text-align: end;
205
+ }
206
+ .lexical-root :global([data-lexical-text=true]) {
207
+ cursor: text;
208
+ }
209
+ .lexical-root :global(:is(th, td)) > :global(p) {
210
+ margin: 0;
211
+ white-space: normal;
212
+ word-break: normal;
213
+ }
214
+ .lexical-root :global(hr) {
215
+ margin: var(--sui-paragraph-margin) 0;
216
+ border: none;
217
+ padding: 0;
218
+ }
219
+ .lexical-root :global(hr::after) {
220
+ display: block;
221
+ height: 2px;
222
+ background-color: var(--sui-control-border-color);
223
+ line-height: 2px;
224
+ content: "";
225
+ }
226
+
227
+ :root[data-theme=light] .lexical-root :global(.token:is(.comment, .prolog, .doctype, .cdata)) {
228
+ color: slategray;
229
+ }
230
+ :root[data-theme=light] .lexical-root :global(.token.punctuation) {
231
+ color: #999;
232
+ }
233
+ :root[data-theme=light] .lexical-root :global(.token.namespace) {
234
+ opacity: 0.7;
235
+ }
236
+ :root[data-theme=light] .lexical-root :global(.token:is(.property, .tag, .boolean, .number, .constant, .symbol, .deleted)) {
237
+ color: #905;
238
+ }
239
+ :root[data-theme=light] .lexical-root :global(.token:is(.selector, .attr-name, .string, .char, .builtin, .inserted)) {
240
+ color: #690;
241
+ }
242
+ :root[data-theme=light] .lexical-root :global(.token:is(.operator, .entity, .url)), :root[data-theme=light] .lexical-root :global(.language-css) :global(.token.string), :root[data-theme=light] .lexical-root :global(.style) :global(.token.string) {
243
+ color: #9a6e3a;
244
+ }
245
+ :root[data-theme=light] .lexical-root :global(.token:is(.atrule, .attr-value, .keyword)) {
246
+ color: #07a;
247
+ }
248
+ :root[data-theme=light] .lexical-root :global(.token:is(.function, .class-name)) {
249
+ color: #dd4a68;
250
+ }
251
+ :root[data-theme=light] .lexical-root :global(.token:is(.regex, .important, .variable)) {
252
+ color: #e90;
253
+ }
254
+
255
+ :root[data-theme=dark] .lexical-root :global(.token:is(.comment, .block-comment, .prolog, .doctype, .cdata)) {
256
+ color: #999;
257
+ }
258
+ :root[data-theme=dark] .lexical-root :global(.token.punctuation) {
259
+ color: #ccc;
260
+ }
261
+ :root[data-theme=dark] .lexical-root :global(.token:is(.tag, .attr-name, .namespace, .deleted)) {
262
+ color: #e2777a;
263
+ }
264
+ :root[data-theme=dark] .lexical-root :global(.token.function-name) {
265
+ color: #6196cc;
266
+ }
267
+ :root[data-theme=dark] .lexical-root :global(.token:is(.boolean, .number, .function)) {
268
+ color: #f08d49;
269
+ }
270
+ :root[data-theme=dark] .lexical-root :global(.token:is(.property, .class-name, .constant, .symbol)) {
271
+ color: #f8c555;
272
+ }
273
+ :root[data-theme=dark] .lexical-root :global(.token:is(.selector, .important, .atrule, .keyword, .builtin)) {
274
+ color: #cc99cd;
275
+ }
276
+ :root[data-theme=dark] .lexical-root :global(.token:is(.string, .char, .attr-value, .regex, .variable)) {
277
+ color: #7ec699;
278
+ }
279
+ :root[data-theme=dark] .lexical-root :global(.token:is(.operator, .entity, .url)) {
280
+ color: #67cdcc;
281
+ }
282
+ :root[data-theme=dark] .lexical-root :global(.token:is(.important, .bold)) {
283
+ font-weight: bold;
284
+ }
285
+ :root[data-theme=dark] .lexical-root :global(.token.italic) {
286
+ font-style: italic;
287
+ }
288
+ :root[data-theme=dark] .lexical-root :global(.token.entity) {
289
+ cursor: help;
290
+ }
291
+ :root[data-theme=dark] .lexical-root :global(.token.inserted) {
292
+ color: green;
293
+ }</style>
@@ -131,28 +131,21 @@
131
131
  </Toast>
132
132
  {/if}
133
133
 
134
- <style lang="scss">
135
- .text-editor {
136
- margin: var(--sui-focus-ring-width);
137
- width: calc(100% - var(--sui-focus-ring-width) * 2);
138
-
139
- &.flex:not([hidden]) {
140
- display: block; // Avoid Tailwind .flex class collisions
141
- }
142
-
143
- :global {
144
- .sui.text-area {
145
- margin: 0 !important;
146
- width: 100% !important;
147
- min-width: auto;
148
-
149
- textarea {
150
- border-start-start-radius: 0 !important;
151
- border-start-end-radius: 0 !important;
152
- border-end-start-radius: var(--sui-textbox-border-radius) !important;
153
- border-end-end-radius: var(--sui-textbox-border-radius) !important;
154
- }
155
- }
156
- }
157
- }
158
- </style>
134
+ <style>.text-editor {
135
+ margin: var(--sui-focus-ring-width);
136
+ width: calc(100% - var(--sui-focus-ring-width) * 2);
137
+ }
138
+ .text-editor.flex:not([hidden]) {
139
+ display: block;
140
+ }
141
+ .text-editor :global(.sui.text-area) {
142
+ margin: 0 !important;
143
+ width: 100% !important;
144
+ min-width: auto;
145
+ }
146
+ .text-editor :global(.sui.text-area) :global(textarea) {
147
+ border-start-start-radius: 0 !important;
148
+ border-start-end-radius: 0 !important;
149
+ border-end-start-radius: var(--sui-textbox-border-radius) !important;
150
+ border-end-end-radius: var(--sui-textbox-border-radius) !important;
151
+ }</style>
@@ -34,48 +34,41 @@
34
34
  </Toolbar>
35
35
  </div>
36
36
 
37
- <style lang="scss">
38
- .wrapper {
39
- display: contents;
40
-
41
- :global {
42
- [role='toolbar'] {
43
- position: sticky;
44
- top: 0;
45
- z-index: 100;
46
- display: flex;
47
- flex-wrap: wrap;
48
- gap: 4px;
49
- border-width: 1px 1px 0;
50
- border-style: solid;
51
- border-color: var(--sui-textbox-border-color);
52
- border-start-start-radius: var(--sui-textbox-border-radius);
53
- border-start-end-radius: var(--sui-textbox-border-radius);
54
- border-end-start-radius: 0;
55
- border-end-end-radius: 0;
56
- padding: 0 4px;
57
- height: auto;
58
- min-height: 40px;
59
- background-color: var(--sui-tertiary-background-color);
60
-
61
- @media (width < 768px) {
62
- flex-wrap: wrap;
63
- height: auto;
64
- }
65
- }
66
-
67
- .sui.menu-button {
68
- padding: 0 4px;
69
- }
70
-
71
- .sui.button {
72
- flex: none;
73
- margin: 0 !important;
74
- }
75
-
76
- .sui.button-group {
77
- gap: 4px;
78
- }
79
- }
37
+ <style>.wrapper {
38
+ display: contents;
39
+ }
40
+ .wrapper :global([role=toolbar]) {
41
+ position: sticky;
42
+ top: 0;
43
+ z-index: 100;
44
+ display: flex;
45
+ flex-wrap: wrap;
46
+ gap: 4px;
47
+ border-width: 1px 1px 0;
48
+ border-style: solid;
49
+ border-color: var(--sui-textbox-border-color);
50
+ border-start-start-radius: var(--sui-textbox-border-radius);
51
+ border-start-end-radius: var(--sui-textbox-border-radius);
52
+ border-end-start-radius: 0;
53
+ border-end-end-radius: 0;
54
+ padding: 0 4px;
55
+ height: auto;
56
+ min-height: 40px;
57
+ background-color: var(--sui-tertiary-background-color);
58
+ }
59
+ @media (width < 768px) {
60
+ .wrapper :global([role=toolbar]) {
61
+ flex-wrap: wrap;
62
+ height: auto;
80
63
  }
81
- </style>
64
+ }
65
+ .wrapper :global(.sui.menu-button) {
66
+ padding: 0 4px;
67
+ }
68
+ .wrapper :global(.sui.button) {
69
+ flex: none;
70
+ margin: 0 !important;
71
+ }
72
+ .wrapper :global(.sui.button-group) {
73
+ gap: 4px;
74
+ }</style>