@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
@@ -31,8 +31,6 @@
31
31
  {@render children?.()}
32
32
  </div>
33
33
 
34
- <style lang="scss">
35
- .grid-col-header {
36
- display: table-cell;
37
- }
38
- </style>
34
+ <style>.grid-col-header {
35
+ display: table-cell;
36
+ }</style>
@@ -36,8 +36,6 @@
36
36
  {@render children?.()}
37
37
  </div>
38
38
 
39
- <style lang="scss">
40
- .grid-foot {
41
- display: table-footer-group;
42
- }
43
- </style>
39
+ <style>.grid-foot {
40
+ display: table-footer-group;
41
+ }</style>
@@ -36,8 +36,6 @@
36
36
  {@render children?.()}
37
37
  </div>
38
38
 
39
- <style lang="scss">
40
- .grid-head {
41
- display: table-header-group;
42
- }
43
- </style>
39
+ <style>.grid-head {
40
+ display: table-header-group;
41
+ }</style>
@@ -31,9 +31,7 @@
31
31
  {@render children?.()}
32
32
  </div>
33
33
 
34
- <style lang="scss">
35
- .grid-row-header {
36
- display: table-cell;
37
- height: var(--sui-secondary-row-height);
38
- }
39
- </style>
34
+ <style>.grid-row-header {
35
+ display: table-cell;
36
+ height: var(--sui-secondary-row-height);
37
+ }</style>
@@ -42,9 +42,7 @@
42
42
  {@render children?.()}
43
43
  </div>
44
44
 
45
- <style lang="scss">
46
- .grid-row {
47
- display: table-row;
48
- height: var(--sui-primary-row-height);
49
- }
50
- </style>
45
+ <style>.grid-row {
46
+ display: table-row;
47
+ height: var(--sui-primary-row-height);
48
+ }</style>
@@ -55,21 +55,15 @@
55
55
  {@render children?.()}
56
56
  </div>
57
57
 
58
- <style lang="scss">
59
- .grid {
60
- display: table;
61
- margin: var(--sui-focus-ring-width);
62
- width: calc(100% - var(--sui-focus-ring-width) * 2);
63
-
64
- &.data {
65
- border-collapse: collapse;
66
-
67
- :global {
68
- :is(.grid-col-header, .grid-row-header, .grid-cell) {
69
- border: 1px solid var(--sui-secondary-border-color);
70
- padding: 8px 8px;
71
- }
72
- }
73
- }
74
- }
75
- </style>
58
+ <style>.grid {
59
+ display: table;
60
+ margin: var(--sui-focus-ring-width);
61
+ width: calc(100% - var(--sui-focus-ring-width) * 2);
62
+ }
63
+ .grid.data {
64
+ border-collapse: collapse;
65
+ }
66
+ .grid.data :global(:is(.grid-col-header, .grid-row-header, .grid-cell)) {
67
+ border: 1px solid var(--sui-secondary-border-color);
68
+ padding: 8px 8px;
69
+ }</style>
@@ -30,10 +30,8 @@
30
30
  {name}
31
31
  </span>
32
32
 
33
- <style lang="scss">
34
- .icon.small-arrow {
35
- overflow: hidden;
36
- width: 12px;
37
- text-indent: -6px;
38
- }
39
- </style>
33
+ <style>.icon.small-arrow {
34
+ overflow: hidden;
35
+ width: 12px;
36
+ text-indent: -6px;
37
+ }</style>
@@ -90,82 +90,65 @@
90
90
  </div>
91
91
  </div>
92
92
 
93
- <style lang="scss">
94
- [role='listbox'] {
95
- display: flex;
96
- flex-direction: column;
97
- margin: var(--sui-focus-ring-width);
98
- border-width: var(--sui-listbox-border-width, 1px);
99
- border-style: var(--sui-listbox-border-style, solid);
100
- border-color: var(--sui-listbox-border-width, var(--sui-secondary-border-color));
101
- border-radius: var(--sui-listbox-border-radius, 4px);
102
- padding: var(--sui-listbox-padding, 4px);
103
- min-width: var(--sui-listbox-min-width, calc(var(--sui-option-height) * 5));
104
- color: var(--sui-listbox-foreground-color);
105
- background-color: var(--sui-listbox-background-color);
106
- font-family: var(--sui-control-font-family);
107
- font-size: var(--sui-control-font-size);
108
- line-height: var(--sui-control-line-height);
109
-
110
- @media (pointer: coarse) {
111
- gap: 8px 0;
112
- }
113
-
114
- :global {
115
- [role='separator'] {
116
- margin: 4px 0;
117
- background-color: var(--sui-control-border-color);
118
- }
119
- }
120
-
121
- &[aria-invalid='true'] {
122
- border-color: var(--sui-error-border-color);
123
- }
124
-
125
- &.tabs {
126
- padding: 0;
127
- border-block-start-width: 0;
128
- border-block-end-width: 0;
129
- border-inline-end-width: 1px;
130
- border-inline-start-width: 0;
131
- border-color: var(--sui-control-border-color);
132
-
133
- :global {
134
- .option button {
135
- justify-content: flex-start;
136
- border-width: 0;
137
- border-inline-end-width: 2px;
138
- border-color: transparent;
139
- padding: 0 12px;
140
- border-start-end-radius: 0;
141
- border-end-end-radius: 0;
142
- height: var(--sui-tab-medium-height);
143
-
144
- &[aria-selected='true'] {
145
- border-color: var(--sui-primary-accent-color-light);
146
- }
147
-
148
- .icon {
149
- display: none;
150
- }
151
- }
152
- }
153
- }
154
-
155
- &.in-combobox:focus-visible {
156
- outline-color: transparent;
157
- }
158
-
159
- &.filtered {
160
- :global {
161
- [role='separator'] {
162
- display: none;
163
- }
164
- }
165
- }
166
- }
167
-
168
- .inner {
169
- display: contents;
93
+ <style>[role=listbox] {
94
+ display: flex;
95
+ flex-direction: column;
96
+ margin: var(--sui-focus-ring-width);
97
+ border-width: var(--sui-listbox-border-width, 1px);
98
+ border-style: var(--sui-listbox-border-style, solid);
99
+ border-color: var(--sui-listbox-border-width, var(--sui-secondary-border-color));
100
+ border-radius: var(--sui-listbox-border-radius, 4px);
101
+ padding: var(--sui-listbox-padding, 4px);
102
+ min-width: var(--sui-listbox-min-width, calc(var(--sui-option-height) * 5));
103
+ color: var(--sui-listbox-foreground-color);
104
+ background-color: var(--sui-listbox-background-color);
105
+ font-family: var(--sui-control-font-family);
106
+ font-size: var(--sui-control-font-size);
107
+ line-height: var(--sui-control-line-height);
108
+ }
109
+ @media (pointer: coarse) {
110
+ [role=listbox] {
111
+ gap: 8px 0;
170
112
  }
171
- </style>
113
+ }
114
+ [role=listbox] :global([role=separator]) {
115
+ margin: 4px 0;
116
+ background-color: var(--sui-control-border-color);
117
+ }
118
+ [role=listbox][aria-invalid=true] {
119
+ border-color: var(--sui-error-border-color);
120
+ }
121
+ [role=listbox].tabs {
122
+ padding: 0;
123
+ border-block-start-width: 0;
124
+ border-block-end-width: 0;
125
+ border-inline-end-width: 1px;
126
+ border-inline-start-width: 0;
127
+ border-color: var(--sui-control-border-color);
128
+ }
129
+ [role=listbox].tabs :global(.option) :global(button) {
130
+ justify-content: flex-start;
131
+ border-width: 0;
132
+ border-inline-end-width: 2px;
133
+ border-color: transparent;
134
+ padding: 0 12px;
135
+ border-start-end-radius: 0;
136
+ border-end-end-radius: 0;
137
+ height: var(--sui-tab-medium-height);
138
+ }
139
+ [role=listbox].tabs :global(.option) :global(button[aria-selected=true]) {
140
+ border-color: var(--sui-primary-accent-color-light);
141
+ }
142
+ [role=listbox].tabs :global(.option) :global(button) :global(.icon) {
143
+ display: none;
144
+ }
145
+ [role=listbox].in-combobox:focus-visible {
146
+ outline-color: transparent;
147
+ }
148
+ [role=listbox].filtered :global([role=separator]) {
149
+ display: none;
150
+ }
151
+
152
+ .inner {
153
+ display: contents;
154
+ }</style>
@@ -62,20 +62,16 @@
62
62
  </div>
63
63
  </div>
64
64
 
65
- <style lang="scss">
66
- .option-group {
67
- &:not(:first-child) {
68
- margin: 12px 0 0;
69
- }
70
- }
65
+ <style>.option-group:not(:first-child) {
66
+ margin: 12px 0 0;
67
+ }
71
68
 
72
- .label {
73
- margin: 8px;
74
- color: var(--sui-secondary-foreground-color);
75
- font-size: var(--sui-font-size-small);
76
- }
69
+ .label {
70
+ margin: 8px;
71
+ color: var(--sui-secondary-foreground-color);
72
+ font-size: var(--sui-font-size-small);
73
+ }
77
74
 
78
- .inner {
79
- display: contents;
80
- }
81
- </style>
75
+ .inner {
76
+ display: contents;
77
+ }</style>
@@ -84,57 +84,42 @@
84
84
  </Button>
85
85
  </div>
86
86
 
87
- <style lang="scss">
88
- .option {
89
- display: contents;
90
-
91
- &:focus-visible {
92
- outline-width: 0 !important;
93
- }
94
-
95
- :global {
96
- &.wrap button {
97
- white-space: normal;
98
- }
99
-
100
- button {
101
- flex: none;
102
- display: flex;
103
- gap: 4px;
104
- margin: 0 !important;
105
- border-radius: var(--sui-option-border-radius);
106
- padding: var(--sui-option-padding);
107
- width: 100%;
108
- height: auto;
109
- min-height: var(--sui-option-height);
110
-
111
- &:active {
112
- background-color: var(--sui-active-background-color);
113
- }
114
-
115
- &[aria-selected='true'] {
116
- .icon.check {
117
- color: var(--sui-primary-accent-color-text);
118
- }
119
- }
120
-
121
- * {
122
- flex: none;
123
- }
124
-
125
- .label {
126
- flex: auto;
127
- }
128
- }
129
-
130
- :is(.focused, button:hover) {
131
- color: var(--sui-highlight-foreground-color);
132
- background-color: var(--sui-hover-background-color);
133
- }
134
-
135
- .icon.check {
136
- margin: -2px;
137
- }
138
- }
139
- }
140
- </style>
87
+ <style>.option {
88
+ display: contents;
89
+ }
90
+ .option:focus-visible {
91
+ outline-width: 0 !important;
92
+ }
93
+ .option :global(.wrap) :global(button) {
94
+ white-space: normal;
95
+ }
96
+ .option :global(button) {
97
+ flex: none;
98
+ display: flex;
99
+ gap: 4px;
100
+ margin: 0 !important;
101
+ border-radius: var(--sui-option-border-radius);
102
+ padding: var(--sui-option-padding);
103
+ width: 100%;
104
+ height: auto;
105
+ min-height: var(--sui-option-height);
106
+ }
107
+ .option :global(button:active) {
108
+ background-color: var(--sui-active-background-color);
109
+ }
110
+ .option :global(button[aria-selected=true]) :global(.icon.check) {
111
+ color: var(--sui-primary-accent-color-text);
112
+ }
113
+ .option :global(button) :global(*) {
114
+ flex: none;
115
+ }
116
+ .option :global(button) :global(.label) {
117
+ flex: auto;
118
+ }
119
+ .option :global(:is(.focused, button:hover)) {
120
+ color: var(--sui-highlight-foreground-color);
121
+ background-color: var(--sui-hover-background-color);
122
+ }
123
+ .option :global(.icon.check) {
124
+ margin: -2px;
125
+ }</style>
@@ -53,8 +53,6 @@
53
53
  </div>
54
54
  </div>
55
55
 
56
- <style lang="scss">
57
- .inner {
58
- display: contents;
59
- }
60
- </style>
56
+ <style>.inner {
57
+ display: contents;
58
+ }</style>
@@ -154,70 +154,54 @@
154
154
  {/if}
155
155
  </div>
156
156
 
157
- <style lang="scss">
158
- .menuitem {
159
- position: relative;
160
-
161
- :global {
162
- button {
163
- display: flex;
164
- gap: var(--sui-menuitem-gap, 4px);
165
- align-items: var(--sui-menuitem-align-items, center);
166
- border-radius: var(--sui-menuitem-border-radius, var(--sui-option-border-radius, 4px));
167
- margin: 0 !important;
168
- padding: var(--sui-menuitem-padding, 0 16px);
169
- width: 100%;
170
- min-width: var(--sui-menuitem-min-width, 160px);
171
- height: var(--sui-menuitem-height, var(--sui-option-height));
172
- color: var(--sui-menuitem-foreground-color, var(--sui-control-foreground-color, inherit));
173
- background-color: var(--sui-menuitem-background-color, transparent);
174
- font-size: var(--sui-menuitem-font-size, var(--sui-option-font-size));
175
- font-weight: var(
176
- --sui-menuitem-font-weight,
177
- var(--sui-option-font-weight, var(--sui-font-weight-normal, normal))
178
- );
179
-
180
- &[aria-checked='true'] {
181
- .icon {
182
- color: var(--sui-primary-accent-color-text);
183
- }
184
- }
185
-
186
- &:hover {
187
- color: var(--sui-highlight-foreground-color);
188
- background-color: var(--sui-hover-background-color);
189
- }
190
-
191
- &:active {
192
- background-color: var(--sui-active-background-color);
193
- }
194
- }
195
-
196
- &:hover > [role='menu'] {
197
- opacity: 1;
198
- }
199
-
200
- & > [role='menu'] {
201
- position: absolute;
202
- inset-block-start: 2px;
203
- inset-block-end: auto;
204
- inset-inline-start: calc(100% + 4px);
205
- inset-inline-end: auto;
206
-
207
- &:hover {
208
- opacity: 1;
209
- }
210
- }
211
- }
212
- }
213
-
214
- .content {
215
- flex: auto;
216
- }
217
-
218
- .icon-outer {
219
- flex: none;
220
- width: 24px;
221
- height: 24px;
222
- }
223
- </style>
157
+ <style>.menuitem {
158
+ position: relative;
159
+ }
160
+ .menuitem :global(button) {
161
+ display: flex;
162
+ gap: var(--sui-menuitem-gap, 4px);
163
+ align-items: var(--sui-menuitem-align-items, center);
164
+ border-radius: var(--sui-menuitem-border-radius, var(--sui-option-border-radius, 4px));
165
+ margin: 0 !important;
166
+ padding: var(--sui-menuitem-padding, 0 16px);
167
+ width: 100%;
168
+ min-width: var(--sui-menuitem-min-width, 160px);
169
+ height: var(--sui-menuitem-height, var(--sui-option-height));
170
+ color: var(--sui-menuitem-foreground-color, var(--sui-control-foreground-color, inherit));
171
+ background-color: var(--sui-menuitem-background-color, transparent);
172
+ font-size: var(--sui-menuitem-font-size, var(--sui-option-font-size));
173
+ font-weight: var(--sui-menuitem-font-weight, var(--sui-option-font-weight, var(--sui-font-weight-normal, normal)));
174
+ }
175
+ .menuitem :global(button[aria-checked=true]) :global(.icon) {
176
+ color: var(--sui-primary-accent-color-text);
177
+ }
178
+ .menuitem :global(button:hover) {
179
+ color: var(--sui-highlight-foreground-color);
180
+ background-color: var(--sui-hover-background-color);
181
+ }
182
+ .menuitem :global(button:active) {
183
+ background-color: var(--sui-active-background-color);
184
+ }
185
+ .menuitem :global(:hover) > :global([role=menu]) {
186
+ opacity: 1;
187
+ }
188
+ .menuitem > :global([role=menu]) {
189
+ position: absolute;
190
+ inset-block-start: 2px;
191
+ inset-block-end: auto;
192
+ inset-inline-start: calc(100% + 4px);
193
+ inset-inline-end: auto;
194
+ }
195
+ .menuitem > :global([role=menu]:hover) {
196
+ opacity: 1;
197
+ }
198
+
199
+ .content {
200
+ flex: auto;
201
+ }
202
+
203
+ .icon-outer {
204
+ flex: none;
205
+ width: 24px;
206
+ height: 24px;
207
+ }</style>
@@ -55,26 +55,22 @@
55
55
  {@render children?.()}
56
56
  </div>
57
57
 
58
- <style lang="scss">
58
+ <style>.menu {
59
+ display: flex;
60
+ flex-direction: column;
61
+ margin: 0;
62
+ border-width: var(--sui-menu-border-width, 1px);
63
+ border-style: var(--sui-menu-border-style, solid);
64
+ border-color: var(--sui-menu-border-width, var(--sui-secondary-border-color));
65
+ border-radius: var(--sui-menu-border-radius, 4px);
66
+ padding: var(--sui-menu-padding, 4px);
67
+ }
68
+ @media (pointer: coarse) {
59
69
  .menu {
60
- display: flex;
61
- flex-direction: column;
62
- margin: 0;
63
- border-width: var(--sui-menu-border-width, 1px);
64
- border-style: var(--sui-menu-border-style, solid);
65
- border-color: var(--sui-menu-border-width, var(--sui-secondary-border-color));
66
- border-radius: var(--sui-menu-border-radius, 4px);
67
- padding: var(--sui-menu-padding, 4px);
68
-
69
- @media (pointer: coarse) {
70
- gap: 8px 0;
71
- }
72
-
73
- :global {
74
- [role='separator'] {
75
- margin: var(--sui-menu-divider-margin, 4px);
76
- background-color: var(--sui-menu-divider-color, var(--sui-control-border-color));
77
- }
78
- }
70
+ gap: 8px 0;
79
71
  }
80
- </style>
72
+ }
73
+ .menu :global([role=separator]) {
74
+ margin: var(--sui-menu-divider-margin, 4px);
75
+ background-color: var(--sui-menu-divider-color, var(--sui-control-border-color));
76
+ }</style>
@@ -43,27 +43,18 @@
43
43
  <div role="none" style:width="{now}%"></div>
44
44
  </div>
45
45
 
46
- <style lang="scss">
47
- .progressbar {
48
- overflow: hidden;
49
- border-width: var(--sui-progressbar-border-width, 1px);
50
- border-style: var(--sui-progressbar-border-style, solid);
51
- border-color: var(--sui-progressbar-border-color, var(--sui-control-border-color));
52
- border-radius: var(--sui-progressbar-border-radius, 16px);
53
- width: var(--sui-progressbar-width, 240px);
54
- height: var(--sui-progressbar-height, 10px);
55
- background-color: var(
56
- --sui-progressbar-background-color,
57
- var(--sui-secondary-background-color)
58
- );
59
-
60
- div {
61
- height: 100%;
62
- background-color: var(
63
- --sui-progressbar-foreground-color,
64
- var(--sui-primary-accent-color-light)
65
- );
66
- transition: width 250ms;
67
- }
68
- }
69
- </style>
46
+ <style>.progressbar {
47
+ overflow: hidden;
48
+ border-width: var(--sui-progressbar-border-width, 1px);
49
+ border-style: var(--sui-progressbar-border-style, solid);
50
+ border-color: var(--sui-progressbar-border-color, var(--sui-control-border-color));
51
+ border-radius: var(--sui-progressbar-border-radius, 16px);
52
+ width: var(--sui-progressbar-width, 240px);
53
+ height: var(--sui-progressbar-height, 10px);
54
+ background-color: var(--sui-progressbar-background-color, var(--sui-secondary-background-color));
55
+ }
56
+ .progressbar div {
57
+ height: 100%;
58
+ background-color: var(--sui-progressbar-foreground-color, var(--sui-primary-accent-color-light));
59
+ transition: width 250ms;
60
+ }</style>