@sveltia/ui 0.78.4 → 0.79.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 (183) hide show
  1. package/dist/components/alert/alert-content.svelte +51 -0
  2. package/dist/components/alert/alert-content.svelte.d.ts +39 -0
  3. package/dist/components/alert/alert.d.ts +3 -0
  4. package/dist/components/alert/alert.js +21 -0
  5. package/dist/components/alert/alert.svelte +6 -30
  6. package/dist/components/alert/infobar.svelte +7 -21
  7. package/dist/components/alert/infobar.svelte.d.ts +2 -2
  8. package/dist/components/button/button.svelte +11 -11
  9. package/dist/components/button/button.svelte.d.ts +2 -2
  10. package/dist/components/button/select-button.svelte +1 -1
  11. package/dist/components/button/select-button.svelte.d.ts +2 -2
  12. package/dist/components/button/split-button.svelte +1 -1
  13. package/dist/components/button/split-button.svelte.d.ts +3 -3
  14. package/dist/components/calendar/calendar.d.ts +2 -0
  15. package/dist/components/calendar/calendar.js +34 -0
  16. package/dist/components/calendar/calendar.svelte +49 -5
  17. package/dist/components/checkbox/checkbox.svelte +11 -4
  18. package/dist/components/checkbox/checkbox.svelte.d.ts +2 -2
  19. package/dist/components/dialog/alert-dialog.svelte +1 -1
  20. package/dist/components/dialog/alert-dialog.svelte.d.ts +2 -2
  21. package/dist/components/dialog/confirmation-dialog.svelte +1 -1
  22. package/dist/components/dialog/confirmation-dialog.svelte.d.ts +2 -2
  23. package/dist/components/dialog/dialog.svelte +8 -18
  24. package/dist/components/dialog/dialog.svelte.d.ts +2 -2
  25. package/dist/components/dialog/modal-close-button.svelte +50 -0
  26. package/dist/components/dialog/modal-close-button.svelte.d.ts +43 -0
  27. package/dist/components/dialog/prompt-dialog.svelte +1 -1
  28. package/dist/components/dialog/prompt-dialog.svelte.d.ts +4 -4
  29. package/dist/components/disclosure/disclosure.svelte +1 -1
  30. package/dist/components/drawer/drawer.svelte +12 -34
  31. package/dist/components/drawer/drawer.svelte.d.ts +1 -1
  32. package/dist/components/emoji/caret.d.ts +1 -1
  33. package/dist/components/emoji/caret.js +1 -1
  34. package/dist/components/emoji/emoji-suggestions.svelte +1 -1
  35. package/dist/components/emoji/emoji-suggestions.svelte.d.ts +3 -3
  36. package/dist/components/emoji/emoji.d.ts +2 -2
  37. package/dist/components/emoji/emoji.js +1 -1
  38. package/dist/components/emoji/position.d.ts +2 -2
  39. package/dist/components/emoji/position.js +1 -1
  40. package/dist/components/grid/grid-body.svelte +6 -2
  41. package/dist/components/grid/grid-cell.svelte +3 -9
  42. package/dist/components/grid/grid-col-header.svelte +3 -9
  43. package/dist/components/grid/grid-foot.svelte +4 -11
  44. package/dist/components/grid/grid-head.svelte +4 -11
  45. package/dist/components/grid/grid-row-header.svelte +3 -10
  46. package/dist/components/grid/grid-row.svelte +3 -16
  47. package/dist/components/listbox/listbox.svelte +1 -1
  48. package/dist/components/listbox/listbox.svelte.d.ts +1 -1
  49. package/dist/components/listbox/option.svelte +1 -1
  50. package/dist/components/listbox/option.svelte.d.ts +2 -2
  51. package/dist/components/menu/menu-button.svelte +2 -2
  52. package/dist/components/menu/menu-button.svelte.d.ts +4 -4
  53. package/dist/components/menu/menu-item-checkable.svelte +71 -0
  54. package/dist/components/menu/menu-item-checkable.svelte.d.ts +25 -0
  55. package/dist/components/menu/menu-item-checkbox.svelte +3 -36
  56. package/dist/components/menu/menu-item-checkbox.svelte.d.ts +3 -3
  57. package/dist/components/menu/menu-item-group.svelte +8 -5
  58. package/dist/components/menu/menu-item-group.svelte.d.ts +9 -1
  59. package/dist/components/menu/menu-item-radio.svelte +3 -36
  60. package/dist/components/menu/menu-item-radio.svelte.d.ts +3 -3
  61. package/dist/components/menu/menu-item.svelte +22 -6
  62. package/dist/components/menu/menu-item.svelte.d.ts +4 -4
  63. package/dist/components/radio/radio.svelte +12 -1
  64. package/dist/components/resizable-pane/resizable-handle.svelte +14 -18
  65. package/dist/components/resizable-pane/resizable-pane-group.svelte +9 -6
  66. package/dist/components/resizable-pane/resizable-pane.svelte +4 -4
  67. package/dist/components/resizable-pane/resizable-pane.svelte.d.ts +7 -6
  68. package/dist/components/resizable-pane/sizing.d.ts +5 -4
  69. package/dist/components/resizable-pane/sizing.js +84 -25
  70. package/dist/components/scroll/infinite-scroll.svelte +16 -21
  71. package/dist/components/select/combobox.svelte +43 -52
  72. package/dist/components/select/combobox.svelte.d.ts +2 -2
  73. package/dist/components/select/select-tags.svelte +7 -1
  74. package/dist/components/select/select.svelte +2 -22
  75. package/dist/components/select/select.svelte.d.ts +1 -1
  76. package/dist/components/slider/slider.d.ts +6 -0
  77. package/dist/components/slider/slider.js +55 -2
  78. package/dist/components/slider/slider.svelte +63 -32
  79. package/dist/components/table/table-cell.svelte +3 -9
  80. package/dist/components/table/table-col-header.svelte +3 -9
  81. package/dist/components/table/table-foot.svelte +4 -11
  82. package/dist/components/table/table-head.svelte +4 -11
  83. package/dist/components/table/table-part.svelte +69 -0
  84. package/dist/components/table/table-part.svelte.d.ts +48 -0
  85. package/dist/components/table/table-row-header.svelte +3 -10
  86. package/dist/components/table/table-row.svelte +3 -10
  87. package/dist/components/tabs/tab-list.svelte +12 -0
  88. package/dist/components/tabs/tab.svelte +1 -1
  89. package/dist/components/tabs/tab.svelte.d.ts +2 -2
  90. package/dist/components/text-editor/constants.d.ts +5 -5
  91. package/dist/components/text-editor/constants.js +1 -1
  92. package/dist/components/text-editor/core.d.ts +4 -5
  93. package/dist/components/text-editor/core.js +372 -285
  94. package/dist/components/text-editor/emoji-autocomplete.svelte +1 -1
  95. package/dist/components/text-editor/lexical-root.svelte +4 -2
  96. package/dist/components/text-editor/raw-markdown.d.ts +6 -33
  97. package/dist/components/text-editor/raw-markdown.js +63 -8
  98. package/dist/components/text-editor/shiki/facade.d.ts +1 -1
  99. package/dist/components/text-editor/shiki/facade.js +63 -48
  100. package/dist/components/text-editor/shiki/generated.d.ts +1 -1
  101. package/dist/components/text-editor/shiki/generated.js +1 -1
  102. package/dist/components/text-editor/shiki/highlighter.d.ts +6 -1
  103. package/dist/components/text-editor/shiki/highlighter.js +3 -4
  104. package/dist/components/text-editor/shiki/loader.d.ts +1 -1
  105. package/dist/components/text-editor/shiki/loader.js +1 -1
  106. package/dist/components/text-editor/shiki/version.d.ts +1 -1
  107. package/dist/components/text-editor/shiki/version.js +1 -1
  108. package/dist/components/text-editor/store.svelte.d.ts +1 -1
  109. package/dist/components/text-editor/store.svelte.js +29 -2
  110. package/dist/components/text-editor/text-editor.svelte +2 -2
  111. package/dist/components/text-editor/text-editor.svelte.d.ts +3 -3
  112. package/dist/components/text-editor/toolbar/code-language-switcher.svelte +24 -16
  113. package/dist/components/text-editor/toolbar/format-text-button.svelte +7 -31
  114. package/dist/components/text-editor/toolbar/format-text-button.svelte.d.ts +1 -1
  115. package/dist/components/text-editor/toolbar/insert-component.d.ts +3 -0
  116. package/dist/components/text-editor/toolbar/insert-component.js +34 -0
  117. package/dist/components/text-editor/toolbar/insert-item-button.svelte +4 -24
  118. package/dist/components/text-editor/toolbar/insert-item-button.svelte.d.ts +1 -1
  119. package/dist/components/text-editor/toolbar/insert-link-button.svelte +9 -25
  120. package/dist/components/text-editor/toolbar/insert-menu-button.svelte +4 -24
  121. package/dist/components/text-editor/toolbar/insert-menu-button.svelte.d.ts +1 -1
  122. package/dist/components/text-editor/toolbar/text-editor-toolbar.svelte +1 -1
  123. package/dist/components/text-editor/toolbar/toggle-block-menu-item.svelte +31 -35
  124. package/dist/components/text-editor/toolbar/toggle-block-menu-item.svelte.d.ts +1 -1
  125. package/dist/components/text-editor/toolbar/toolbar-wrapper.svelte +0 -10
  126. package/dist/components/text-editor/toolbar/toolbar-wrapper.svelte.d.ts +1 -11
  127. package/dist/components/text-editor/transformers/table.d.ts +0 -1
  128. package/dist/components/text-editor/transformers/table.js +1 -2
  129. package/dist/components/text-field/emoji-autocomplete.svelte +1 -1
  130. package/dist/components/text-field/masked-input.svelte +179 -0
  131. package/dist/components/text-field/masked-input.svelte.d.ts +42 -0
  132. package/dist/components/text-field/number-input.js +7 -1
  133. package/dist/components/text-field/number-input.svelte +13 -5
  134. package/dist/components/text-field/number-input.svelte.d.ts +3 -3
  135. package/dist/components/text-field/password-input.svelte +3 -116
  136. package/dist/components/text-field/password-input.svelte.d.ts +3 -3
  137. package/dist/components/text-field/search-bar.svelte +1 -1
  138. package/dist/components/text-field/search-bar.svelte.d.ts +3 -3
  139. package/dist/components/text-field/secret-input.svelte +3 -119
  140. package/dist/components/text-field/secret-input.svelte.d.ts +3 -3
  141. package/dist/components/text-field/text-area.svelte +1 -1
  142. package/dist/components/text-field/text-area.svelte.d.ts +3 -3
  143. package/dist/components/text-field/text-input.svelte +1 -1
  144. package/dist/components/text-field/text-input.svelte.d.ts +3 -3
  145. package/dist/components/toast/toast.svelte +11 -20
  146. package/dist/components/toast/toast.svelte.d.ts +1 -1
  147. package/dist/components/tree/tree-item.svelte +1 -1
  148. package/dist/components/tree/tree-item.svelte.d.ts +1 -1
  149. package/dist/components/tree/tree.svelte +1 -1
  150. package/dist/components/tree/tree.svelte.d.ts +1 -1
  151. package/dist/components/util/font-links.svelte +1 -0
  152. package/dist/components/util/modal.svelte +37 -1
  153. package/dist/components/util/modal.svelte.d.ts +1 -1
  154. package/dist/components/util/popup.svelte +2 -5
  155. package/dist/components/util/popup.svelte.d.ts +2 -2
  156. package/dist/components/util/visibility-observer.svelte +1 -0
  157. package/dist/locales/ar.yaml +1 -1
  158. package/dist/locales/sk.yaml +136 -0
  159. package/dist/services/group.svelte.d.ts +10 -1
  160. package/dist/services/group.svelte.js +361 -251
  161. package/dist/services/navigation.d.ts +19 -0
  162. package/dist/services/navigation.js +84 -0
  163. package/dist/services/popup-position.d.ts +90 -0
  164. package/dist/services/popup-position.js +275 -0
  165. package/dist/services/popup.svelte.d.ts +16 -17
  166. package/dist/services/popup.svelte.js +25 -169
  167. package/dist/services/scroll.d.ts +1 -0
  168. package/dist/services/scroll.js +17 -0
  169. package/dist/services/select.svelte.d.ts +2 -2
  170. package/dist/services/select.svelte.js +1 -1
  171. package/dist/services/text.d.ts +2 -0
  172. package/dist/services/text.js +28 -0
  173. package/dist/services/tree.svelte.d.ts +3 -11
  174. package/dist/services/tree.svelte.js +35 -77
  175. package/dist/services/type-ahead.d.ts +0 -4
  176. package/dist/services/type-ahead.js +3 -1
  177. package/dist/services/widget.d.ts +8 -0
  178. package/dist/services/widget.js +39 -0
  179. package/dist/shiki-engine.js +15 -15
  180. package/dist/styles/mixins.scss +126 -0
  181. package/dist/typedefs.d.ts +5 -0
  182. package/dist/typedefs.js +2 -0
  183. package/package.json +24 -20
@@ -0,0 +1,126 @@
1
+ // Shared component style mixins. Components load this with `@use '../../styles/mixins';`; it emits
2
+ // no CSS on its own.
3
+
4
+ // Make a field stretch to fill its container when the `flex` prop is set. The `display` is repeated
5
+ // to avoid Tailwind `.flex` class collisions.
6
+ @mixin flex-stretch($display: inline-flex) {
7
+ &.flex:not([hidden]) {
8
+ display: $display; // Avoid Tailwind .flex class collisions
9
+ width: -moz-available;
10
+ width: -webkit-fill-available;
11
+ width: stretch;
12
+ min-width: 0;
13
+ }
14
+ }
15
+
16
+ // A `<TextInput>` embedded in a composite field, like `<SearchBar>` or `<NumberInput>`, filling the
17
+ // space left by the other parts. To be included within a `:global` block.
18
+ @mixin embedded-text-input {
19
+ .text-input {
20
+ flex: auto;
21
+ margin: 0 !important;
22
+ width: 0; // = auto
23
+ min-width: 0 !important;
24
+ }
25
+ }
26
+
27
+ // A square button attached to the end of a text field, sharing its border. `$size-property` is the
28
+ // dimension tied to the field height (`width` or `height`), the other one following the aspect
29
+ // ratio.
30
+ @mixin attached-button($size-property) {
31
+ flex: none;
32
+ margin-inline-start: -1px;
33
+ border-width: 1px;
34
+ border-color: var(--sui-textbox-border-color);
35
+ #{$size-property}: var(--sui-textbox-height);
36
+ aspect-ratio: 1 / 1;
37
+
38
+ &:last-child {
39
+ border-start-start-radius: 0;
40
+ border-start-end-radius: 4px;
41
+ border-end-end-radius: 4px;
42
+ border-end-start-radius: 0;
43
+ }
44
+
45
+ .icon {
46
+ font-size: var(--sui-font-size-xx-large);
47
+ }
48
+ }
49
+
50
+ // The label wrapper of a checkbox or radio button.
51
+ @mixin toggle-control-wrapper {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ gap: 8px;
55
+ margin: var(--sui-focus-ring-width);
56
+ // The wrapper forwards clicks to the 20px control, so it’s the pointer target; keep it at the
57
+ // 24px minimum (WCAG 2.5.8) even without a label
58
+ min-width: 24px;
59
+ min-height: 24px;
60
+ color: var(--sui-control-foreground-color);
61
+ font-family: var(--sui-control-font-family);
62
+ font-size: var(--sui-control-font-size);
63
+ line-height: var(--sui-control-line-height);
64
+ cursor: pointer;
65
+ -webkit-user-select: none;
66
+ user-select: none;
67
+ }
68
+
69
+ // The `horizontal` and `vertical` orientations of a checkbox or radio group.
70
+ @mixin toggle-group-orientation {
71
+ &.horizontal {
72
+ gap: 8px;
73
+ align-items: center;
74
+ flex-wrap: wrap;
75
+ }
76
+
77
+ &.vertical {
78
+ gap: 4px;
79
+ flex-direction: column;
80
+
81
+ @media (pointer: coarse) {
82
+ gap: 8px;
83
+ }
84
+ }
85
+ }
86
+
87
+ // The `<Table>` or `<Grid>` wrapper. `$prefix` is the class name prefix of its cells (`table` or
88
+ // `grid`), bordered and padded when the `data` class is set.
89
+ @mixin table($prefix) {
90
+ display: table;
91
+ margin: var(--sui-focus-ring-width);
92
+ width: calc(100% - var(--sui-focus-ring-width) * 2);
93
+
94
+ &.data {
95
+ border-collapse: collapse;
96
+
97
+ :global {
98
+ :is(.#{$prefix}-col-header, .#{$prefix}-row-header, .#{$prefix}-cell) {
99
+ border: 1px solid var(--sui-secondary-border-color);
100
+ padding: 8px 8px;
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ // A `<TableBody>` or `<GridBody>` row group with its optional caption row. Extra caption cell
107
+ // styles can be passed as the content block.
108
+ @mixin row-group {
109
+ [role="rowgroup"] {
110
+ display: table-row-group;
111
+ }
112
+
113
+ [role="row"] {
114
+ display: table-row;
115
+ }
116
+
117
+ [role="columnheader"] {
118
+ display: table-cell;
119
+ padding: 8px;
120
+ color: var(--sui-secondary-foreground-color);
121
+ background-color: var(--sui-secondary-background-color);
122
+ font-size: var(--sui-font-size-default);
123
+ text-align: start;
124
+ @content;
125
+ }
126
+ }
@@ -1048,6 +1048,11 @@ export type TextEditorStore = {
1048
1048
  * has yet to convert it to Markdown and update {@link TextEditorStore.inputValue}.
1049
1049
  */
1050
1050
  pending: boolean;
1051
+ /**
1052
+ * Whether the latest {@link TextEditorStore.inputValue} is still
1053
+ * being imported to the Lexical editor.
1054
+ */
1055
+ importing: boolean;
1051
1056
  /**
1052
1057
  * Function to trigger the Lexical converter.
1053
1058
  */
package/dist/typedefs.js CHANGED
@@ -448,6 +448,8 @@
448
448
  * @property {boolean} showConverterError Whether to show a converter error in the UI.
449
449
  * @property {boolean} pending Whether the user has changed the rich text content, and the editor
450
450
  * has yet to convert it to Markdown and update {@link TextEditorStore.inputValue}.
451
+ * @property {boolean} importing Whether the latest {@link TextEditorStore.inputValue} is still
452
+ * being imported to the Lexical editor.
451
453
  * @property {() => Promise<void>} convertMarkdown Function to trigger the Lexical converter.
452
454
  * @property {(value: string) => string | undefined} getImportedValue Function to get the
453
455
  * {@link TextEditorStore.inputValue} last imported if the given value, exported by the editor, is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltia/ui",
3
- "version": "0.78.4",
3
+ "version": "0.79.1",
4
4
  "description": "A collection of Svelte components and utilities for building user interfaces.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,6 +13,10 @@
13
13
  },
14
14
  "sideEffects": false,
15
15
  "type": "module",
16
+ "imports": {
17
+ "#lib": "./src/lib/index.js",
18
+ "#lib/*": "./src/lib/*"
19
+ },
16
20
  "exports": {
17
21
  ".": {
18
22
  "types": "./dist/index.d.ts",
@@ -54,10 +58,10 @@
54
58
  "@lexical/selection": "^0.52.0",
55
59
  "@lexical/table": "^0.52.0",
56
60
  "@lexical/utils": "^0.52.0",
57
- "@shikijs/langs": "4.4.3",
58
- "@shikijs/themes": "4.4.3",
59
- "@sveltia/i18n": "^1.4.0",
60
- "@sveltia/utils": "^0.12.2",
61
+ "@shikijs/langs": "4.5.0",
62
+ "@shikijs/themes": "4.5.0",
63
+ "@sveltia/i18n": "^1.4.1",
64
+ "@sveltia/utils": "^0.12.3",
61
65
  "lexical": "^0.52.0"
62
66
  },
63
67
  "devDependencies": {
@@ -65,21 +69,21 @@
65
69
  "@fontsource-variable/source-sans-3": "5.3.0",
66
70
  "@fontsource/noto-mono": "5.3.0",
67
71
  "@rollup/plugin-yaml": "^5.0.0",
68
- "@sveltejs/adapter-auto": "^7.0.1",
69
- "@sveltejs/kit": "^2.70.3",
70
- "@sveltejs/package": "^2.5.8",
72
+ "@sveltejs/adapter-auto": "^8.0.0",
73
+ "@sveltejs/kit": "^3.0.0",
74
+ "@sveltejs/package": "^3.0.0",
71
75
  "@sveltejs/vite-plugin-svelte": "^7.3.1",
72
- "@vitest/browser-playwright": "^5.0.2",
73
- "@vitest/coverage-v8": "^5.0.2",
74
- "cspell": "^10.3.5",
76
+ "@vitest/browser-playwright": "^5.0.3",
77
+ "@vitest/coverage-v8": "^5.0.3",
78
+ "cspell": "^10.3.6",
75
79
  "eslint": "^9.39.5",
76
- "eslint-config-airbnb-extended": "^3.2.0",
80
+ "eslint-config-airbnb-extended": "^3.3.0",
77
81
  "eslint-config-prettier": "^10.1.8",
78
82
  "eslint-plugin-import": "^2.32.0",
79
- "eslint-plugin-jsdoc": "^65.0.0",
83
+ "eslint-plugin-jsdoc": "^65.0.2",
80
84
  "eslint-plugin-package-json": "^1.10.1",
81
85
  "eslint-plugin-svelte": "^3.23.0",
82
- "globals": "^17.12.0",
86
+ "globals": "^17.13.0",
83
87
  "happy-dom": "^20.14.5",
84
88
  "oxlint": "^1.86.0",
85
89
  "playwright": "^1.63.0",
@@ -87,18 +91,18 @@
87
91
  "postcss-html": "^2.0.0",
88
92
  "prettier": "^3.9.9",
89
93
  "prettier-plugin-svelte": "^4.1.1",
90
- "rolldown": "^1.2.11",
91
- "sass": "^1.105.0",
92
- "shiki": "^4.4.3",
93
- "stylelint": "^17.15.0",
94
+ "rolldown": "^1.2.12",
95
+ "sass": "^1.105.1",
96
+ "shiki": "^4.5.0",
97
+ "stylelint": "^17.16.0",
94
98
  "stylelint-config-recommended-scss": "^17.0.1",
95
99
  "stylelint-scss": "^7.3.0",
96
100
  "svelte": "^5.57.1",
97
101
  "svelte-check": "^4.7.6",
98
102
  "svelte-preprocess": "^6.0.5",
99
103
  "tslib": "^2.8.1",
100
- "vite": "^8.3.1",
101
- "vitest": "^5.0.2",
104
+ "vite": "^8.3.2",
105
+ "vitest": "^5.0.3",
102
106
  "vitest-browser-svelte": "^3.1.0"
103
107
  },
104
108
  "peerDependencies": {