@realmorg/ui 2.0.0-alpha.2 → 2.0.0-alpha.3

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 (64) hide show
  1. package/components/accordion.html +18 -0
  2. package/components/alert-dialog.html +40 -0
  3. package/components/alert.html +14 -0
  4. package/components/aspect-ratio.html +6 -0
  5. package/components/attachment.html +14 -0
  6. package/components/avatar.html +22 -0
  7. package/components/badge.html +6 -0
  8. package/components/breadcrumb.html +30 -0
  9. package/components/bubble.html +10 -0
  10. package/components/button-group.html +14 -0
  11. package/components/button.html +6 -0
  12. package/components/calendar.html +6 -0
  13. package/components/card.html +30 -0
  14. package/components/carousel.html +22 -0
  15. package/components/chart.html +6 -0
  16. package/components/checkbox.html +6 -0
  17. package/components/code-block.html +6 -0
  18. package/components/collapsible.html +14 -0
  19. package/components/combobox.html +13 -0
  20. package/components/command.html +12 -0
  21. package/components/context-menu.html +14 -0
  22. package/components/dialog.html +49 -3
  23. package/components/direction.html +6 -0
  24. package/components/drawer.html +46 -3
  25. package/components/dropdown-menu.html +49 -0
  26. package/components/empty.html +26 -0
  27. package/components/field.html +26 -0
  28. package/components/hover-card.html +17 -0
  29. package/components/input-group.html +16 -0
  30. package/components/input-otp.html +12 -0
  31. package/components/input.html +12 -0
  32. package/components/item.html +38 -0
  33. package/components/kbd.html +10 -0
  34. package/components/label.html +6 -0
  35. package/components/marker.html +6 -0
  36. package/components/menubar.html +21 -0
  37. package/components/message-scroller.html +6 -0
  38. package/components/message.html +18 -0
  39. package/components/navigation-menu.html +29 -0
  40. package/components/pagination.html +6 -0
  41. package/components/popover.html +31 -0
  42. package/components/progress.html +6 -0
  43. package/components/radio-group.html +6 -0
  44. package/components/resizable.html +14 -0
  45. package/components/scroll-area.html +6 -0
  46. package/components/select.html +12 -0
  47. package/components/separator.html +6 -0
  48. package/components/sheet.html +30 -0
  49. package/components/sidebar.html +52 -2
  50. package/components/skeleton.html +6 -0
  51. package/components/slider.html +28 -1
  52. package/components/spinner.html +6 -0
  53. package/components/switch.html +6 -0
  54. package/components/table.html +6 -0
  55. package/components/tabs.html +18 -0
  56. package/components/textarea.html +12 -0
  57. package/components/toaster.html +6 -0
  58. package/components/toggle-group.html +6 -0
  59. package/components/toggle.html +6 -0
  60. package/components/tooltip.html +17 -0
  61. package/dist/theme.css +13 -0
  62. package/dist/ui.html +988 -9
  63. package/package.json +3 -3
  64. package/theme.css +13 -0
@@ -14,6 +14,12 @@
14
14
  </script>
15
15
 
16
16
  <style>
17
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
18
+ touch-action does not reach shadow content in iOS Safari. */
19
+ :host,
20
+ * {
21
+ touch-action: manipulation;
22
+ }
17
23
  :host {
18
24
  display: block;
19
25
  }
@@ -41,6 +47,10 @@
41
47
  </script>
42
48
 
43
49
  <style>
50
+ :host,
51
+ * {
52
+ touch-action: manipulation;
53
+ }
44
54
  :host {
45
55
  display: block;
46
56
  border-bottom: 1px solid var(--border);
@@ -97,6 +107,10 @@
97
107
 
98
108
  <custom-element name="ui-accordion-trigger" slot="trigger">
99
109
  <style>
110
+ :host,
111
+ * {
112
+ touch-action: manipulation;
113
+ }
100
114
  :host {
101
115
  display: flex;
102
116
  flex: 1;
@@ -110,6 +124,10 @@
110
124
 
111
125
  <custom-element name="ui-accordion-content">
112
126
  <style>
127
+ :host,
128
+ * {
129
+ touch-action: manipulation;
130
+ }
113
131
  :host {
114
132
  display: block;
115
133
  padding-bottom: calc(var(--spacing) * 4);
@@ -61,6 +61,12 @@
61
61
  </script>
62
62
 
63
63
  <style>
64
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
65
+ touch-action does not reach shadow content in iOS Safari. */
66
+ :host,
67
+ * {
68
+ touch-action: manipulation;
69
+ }
64
70
  :host {
65
71
  display: contents;
66
72
  }
@@ -68,6 +74,10 @@
68
74
  box-sizing: border-box;
69
75
  width: 100%;
70
76
  max-width: min(calc(var(--spacing) * 128), calc(100% - calc(var(--spacing) * 8)));
77
+ /* See ui-dialog: an explicit height keeps it from stretching, svh from resizing on scroll. */
78
+ height: fit-content;
79
+ max-height: calc(100svh - calc(var(--spacing) * 8));
80
+ overflow: auto;
71
81
  padding: calc(var(--spacing) * 6);
72
82
  border: 1px solid var(--border);
73
83
  border-radius: var(--radius-lg);
@@ -77,6 +87,8 @@
77
87
  }
78
88
  dialog[open] {
79
89
  display: grid;
90
+ /* Safari stretches a grid overlay to its max-height unless the rows are packed at the start. */
91
+ align-content: start;
80
92
  gap: calc(var(--spacing) * 4);
81
93
  }
82
94
  dialog::backdrop {
@@ -101,6 +113,10 @@
101
113
 
102
114
  <custom-element name="ui-alert-dialog-trigger" slot="trigger">
103
115
  <style>
116
+ :host,
117
+ * {
118
+ touch-action: manipulation;
119
+ }
104
120
  :host,
105
121
  span {
106
122
  display: contents;
@@ -112,6 +128,10 @@
112
128
 
113
129
  <custom-element name="ui-alert-dialog-header" slot="header">
114
130
  <style>
131
+ :host,
132
+ * {
133
+ touch-action: manipulation;
134
+ }
115
135
  :host {
116
136
  display: grid;
117
137
  gap: calc(var(--spacing) * 2);
@@ -123,6 +143,10 @@
123
143
 
124
144
  <custom-element name="ui-alert-dialog-title">
125
145
  <style>
146
+ :host,
147
+ * {
148
+ touch-action: manipulation;
149
+ }
126
150
  :host {
127
151
  display: block;
128
152
  }
@@ -138,6 +162,10 @@
138
162
 
139
163
  <custom-element name="ui-alert-dialog-description">
140
164
  <style>
165
+ :host,
166
+ * {
167
+ touch-action: manipulation;
168
+ }
141
169
  :host {
142
170
  display: block;
143
171
  }
@@ -153,6 +181,10 @@
153
181
 
154
182
  <custom-element name="ui-alert-dialog-footer" slot="footer">
155
183
  <style>
184
+ :host,
185
+ * {
186
+ touch-action: manipulation;
187
+ }
156
188
  :host {
157
189
  display: flex;
158
190
  flex-wrap: wrap;
@@ -173,6 +205,10 @@
173
205
  </script>
174
206
 
175
207
  <style>
208
+ :host,
209
+ * {
210
+ touch-action: manipulation;
211
+ }
176
212
  :host {
177
213
  display: inline-flex;
178
214
  }
@@ -187,6 +223,10 @@
187
223
  </script>
188
224
 
189
225
  <style>
226
+ :host,
227
+ * {
228
+ touch-action: manipulation;
229
+ }
190
230
  :host {
191
231
  display: inline-flex;
192
232
  }
@@ -6,6 +6,12 @@
6
6
  </script>
7
7
 
8
8
  <style>
9
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
10
+ touch-action does not reach shadow content in iOS Safari. */
11
+ :host,
12
+ * {
13
+ touch-action: manipulation;
14
+ }
9
15
  :host {
10
16
  position: relative;
11
17
  display: grid;
@@ -44,6 +50,10 @@
44
50
 
45
51
  <custom-element name="ui-alert-title">
46
52
  <style>
53
+ :host,
54
+ * {
55
+ touch-action: manipulation;
56
+ }
47
57
  :host {
48
58
  display: block;
49
59
  min-height: calc(var(--spacing) * 4);
@@ -57,6 +67,10 @@
57
67
 
58
68
  <custom-element name="ui-alert-description">
59
69
  <style>
70
+ :host,
71
+ * {
72
+ touch-action: manipulation;
73
+ }
60
74
  :host {
61
75
  display: grid;
62
76
  justify-items: start;
@@ -4,6 +4,12 @@
4
4
  </script>
5
5
 
6
6
  <style>
7
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
8
+ touch-action does not reach shadow content in iOS Safari. */
9
+ :host,
10
+ * {
11
+ touch-action: manipulation;
12
+ }
7
13
  :host {
8
14
  display: block;
9
15
  position: relative;
@@ -4,6 +4,12 @@
4
4
  </script>
5
5
 
6
6
  <style>
7
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
8
+ touch-action does not reach shadow content in iOS Safari. */
9
+ :host,
10
+ * {
11
+ touch-action: manipulation;
12
+ }
7
13
  :host {
8
14
  display: inline-flex;
9
15
  align-items: center;
@@ -48,6 +54,10 @@
48
54
 
49
55
  <custom-element name="ui-attachment-media" slot="media">
50
56
  <style>
57
+ :host,
58
+ * {
59
+ touch-action: manipulation;
60
+ }
51
61
  :host {
52
62
  display: grid;
53
63
  place-content: center;
@@ -74,6 +84,10 @@
74
84
 
75
85
  <custom-element name="ui-attachment-actions" slot="actions">
76
86
  <style>
87
+ :host,
88
+ * {
89
+ touch-action: manipulation;
90
+ }
77
91
  :host {
78
92
  display: flex;
79
93
  gap: calc(var(--spacing) * 1);
@@ -18,6 +18,12 @@
18
18
  </script>
19
19
 
20
20
  <style>
21
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
22
+ touch-action does not reach shadow content in iOS Safari. */
23
+ :host,
24
+ * {
25
+ touch-action: manipulation;
26
+ }
21
27
  :host {
22
28
  position: relative;
23
29
  display: inline-flex;
@@ -55,6 +61,10 @@
55
61
  </script>
56
62
 
57
63
  <style>
64
+ :host,
65
+ * {
66
+ touch-action: manipulation;
67
+ }
58
68
  :host {
59
69
  display: contents;
60
70
  }
@@ -72,6 +82,10 @@
72
82
 
73
83
  <custom-element name="ui-avatar-fallback">
74
84
  <style>
85
+ :host,
86
+ * {
87
+ touch-action: manipulation;
88
+ }
75
89
  :host {
76
90
  display: contents;
77
91
  }
@@ -92,6 +106,10 @@
92
106
 
93
107
  <custom-element name="ui-avatar-group" role="group">
94
108
  <style>
109
+ :host,
110
+ * {
111
+ touch-action: manipulation;
112
+ }
95
113
  :host {
96
114
  display: flex;
97
115
  align-items: center;
@@ -109,6 +127,10 @@
109
127
 
110
128
  <custom-element name="ui-avatar-group-count">
111
129
  <style>
130
+ :host,
131
+ * {
132
+ touch-action: manipulation;
133
+ }
112
134
  :host {
113
135
  display: inline-flex;
114
136
  flex-shrink: 0;
@@ -7,6 +7,12 @@
7
7
  </script>
8
8
 
9
9
  <style>
10
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
11
+ touch-action does not reach shadow content in iOS Safari. */
12
+ :host,
13
+ * {
14
+ touch-action: manipulation;
15
+ }
10
16
  :host {
11
17
  display: inline-flex;
12
18
  align-items: center;
@@ -4,6 +4,12 @@
4
4
  </script>
5
5
 
6
6
  <style>
7
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
8
+ touch-action does not reach shadow content in iOS Safari. */
9
+ :host,
10
+ * {
11
+ touch-action: manipulation;
12
+ }
7
13
  :host {
8
14
  display: block;
9
15
  }
@@ -14,6 +20,10 @@
14
20
 
15
21
  <custom-element name="ui-breadcrumb-list">
16
22
  <style>
23
+ :host,
24
+ * {
25
+ touch-action: manipulation;
26
+ }
17
27
  :host {
18
28
  display: block;
19
29
  }
@@ -36,6 +46,10 @@
36
46
 
37
47
  <custom-element name="ui-breadcrumb-item" role="listitem">
38
48
  <style>
49
+ :host,
50
+ * {
51
+ touch-action: manipulation;
52
+ }
39
53
  :host {
40
54
  display: inline-flex;
41
55
  align-items: center;
@@ -52,6 +66,10 @@
52
66
  </script>
53
67
 
54
68
  <style>
69
+ :host,
70
+ * {
71
+ touch-action: manipulation;
72
+ }
55
73
  a {
56
74
  color: inherit;
57
75
  text-decoration: none;
@@ -72,6 +90,10 @@
72
90
 
73
91
  <custom-element name="ui-breadcrumb-page">
74
92
  <style>
93
+ :host,
94
+ * {
95
+ touch-action: manipulation;
96
+ }
75
97
  span {
76
98
  font-weight: var(--font-weight-normal);
77
99
  color: var(--foreground);
@@ -87,6 +109,10 @@
87
109
  </script>
88
110
 
89
111
  <style>
112
+ :host,
113
+ * {
114
+ touch-action: manipulation;
115
+ }
90
116
  :host {
91
117
  display: inline-flex;
92
118
  align-items: center;
@@ -103,6 +129,10 @@
103
129
 
104
130
  <custom-element name="ui-breadcrumb-ellipsis">
105
131
  <style>
132
+ :host,
133
+ * {
134
+ touch-action: manipulation;
135
+ }
106
136
  :host {
107
137
  display: inline-flex;
108
138
  align-items: center;
@@ -7,6 +7,12 @@
7
7
  </script>
8
8
 
9
9
  <style>
10
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
11
+ touch-action does not reach shadow content in iOS Safari. */
12
+ :host,
13
+ * {
14
+ touch-action: manipulation;
15
+ }
10
16
  :host {
11
17
  display: flex;
12
18
  flex-direction: column;
@@ -56,6 +62,10 @@
56
62
 
57
63
  <custom-element name="ui-bubble-reactions" slot="reactions">
58
64
  <style>
65
+ :host,
66
+ * {
67
+ touch-action: manipulation;
68
+ }
59
69
  :host {
60
70
  display: flex;
61
71
  flex-wrap: wrap;
@@ -4,6 +4,12 @@
4
4
  </script>
5
5
 
6
6
  <style>
7
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
8
+ touch-action does not reach shadow content in iOS Safari. */
9
+ :host,
10
+ * {
11
+ touch-action: manipulation;
12
+ }
7
13
  :host {
8
14
  display: inline-flex;
9
15
  align-items: stretch;
@@ -33,6 +39,10 @@
33
39
 
34
40
  <custom-element name="ui-button-group-text">
35
41
  <style>
42
+ :host,
43
+ * {
44
+ touch-action: manipulation;
45
+ }
36
46
  :host {
37
47
  display: flex;
38
48
  align-items: center;
@@ -69,6 +79,10 @@
69
79
  </script>
70
80
 
71
81
  <style>
82
+ :host,
83
+ * {
84
+ touch-action: manipulation;
85
+ }
72
86
  :host {
73
87
  position: relative;
74
88
  z-index: 1;
@@ -62,6 +62,12 @@
62
62
  </script>
63
63
 
64
64
  <style>
65
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
66
+ touch-action does not reach shadow content in iOS Safari. */
67
+ :host,
68
+ * {
69
+ touch-action: manipulation;
70
+ }
65
71
  :host {
66
72
  display: inline-flex;
67
73
  vertical-align: middle;
@@ -80,6 +80,12 @@
80
80
  </script>
81
81
 
82
82
  <style>
83
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
84
+ touch-action does not reach shadow content in iOS Safari. */
85
+ :host,
86
+ * {
87
+ touch-action: manipulation;
88
+ }
83
89
  :host {
84
90
  display: inline-block;
85
91
  padding: calc(var(--spacing) * 3);
@@ -1,5 +1,11 @@
1
1
  <custom-element name="ui-card">
2
2
  <style>
3
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
4
+ touch-action does not reach shadow content in iOS Safari. */
5
+ :host,
6
+ * {
7
+ touch-action: manipulation;
8
+ }
3
9
  :host {
4
10
  display: flex;
5
11
  flex-direction: column;
@@ -18,6 +24,10 @@
18
24
 
19
25
  <custom-element name="ui-card-header">
20
26
  <style>
27
+ :host,
28
+ * {
29
+ touch-action: manipulation;
30
+ }
21
31
  :host {
22
32
  display: grid;
23
33
  grid-auto-rows: min-content;
@@ -39,6 +49,10 @@
39
49
  </script>
40
50
 
41
51
  <style>
52
+ :host,
53
+ * {
54
+ touch-action: manipulation;
55
+ }
42
56
  :host {
43
57
  display: block;
44
58
  }
@@ -55,6 +69,10 @@
55
69
 
56
70
  <custom-element name="ui-card-description">
57
71
  <style>
72
+ :host,
73
+ * {
74
+ touch-action: manipulation;
75
+ }
58
76
  :host {
59
77
  display: block;
60
78
  font-size: var(--text-sm);
@@ -67,6 +85,10 @@
67
85
 
68
86
  <custom-element name="ui-card-action">
69
87
  <style>
88
+ :host,
89
+ * {
90
+ touch-action: manipulation;
91
+ }
70
92
  :host {
71
93
  display: block;
72
94
  grid-column: 2;
@@ -80,6 +102,10 @@
80
102
 
81
103
  <custom-element name="ui-card-content">
82
104
  <style>
105
+ :host,
106
+ * {
107
+ touch-action: manipulation;
108
+ }
83
109
  :host {
84
110
  display: block;
85
111
  padding: 0 calc(var(--spacing) * 6);
@@ -91,6 +117,10 @@
91
117
 
92
118
  <custom-element name="ui-card-footer">
93
119
  <style>
120
+ :host,
121
+ * {
122
+ touch-action: manipulation;
123
+ }
94
124
  :host {
95
125
  display: flex;
96
126
  align-items: center;
@@ -65,6 +65,12 @@
65
65
  </script>
66
66
 
67
67
  <style>
68
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
69
+ touch-action does not reach shadow content in iOS Safari. */
70
+ :host,
71
+ * {
72
+ touch-action: manipulation;
73
+ }
68
74
  :host {
69
75
  --carousel-direction: row;
70
76
  --carousel-axis: x;
@@ -120,6 +126,10 @@
120
126
 
121
127
  <custom-element name="ui-carousel-content">
122
128
  <style>
129
+ :host,
130
+ * {
131
+ touch-action: manipulation;
132
+ }
123
133
  :host {
124
134
  display: flex;
125
135
  min-width: 0;
@@ -152,6 +162,10 @@
152
162
  </script>
153
163
 
154
164
  <style>
165
+ :host,
166
+ * {
167
+ touch-action: manipulation;
168
+ }
155
169
  :host {
156
170
  display: block;
157
171
  box-sizing: border-box;
@@ -167,6 +181,10 @@
167
181
 
168
182
  <custom-element name="ui-carousel-previous">
169
183
  <style>
184
+ :host,
185
+ * {
186
+ touch-action: manipulation;
187
+ }
170
188
  :host {
171
189
  display: inline-flex;
172
190
  }
@@ -177,6 +195,10 @@
177
195
 
178
196
  <custom-element name="ui-carousel-next">
179
197
  <style>
198
+ :host,
199
+ * {
200
+ touch-action: manipulation;
201
+ }
180
202
  :host {
181
203
  display: inline-flex;
182
204
  }
@@ -84,6 +84,12 @@
84
84
  </script>
85
85
 
86
86
  <style>
87
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
88
+ touch-action does not reach shadow content in iOS Safari. */
89
+ :host,
90
+ * {
91
+ touch-action: manipulation;
92
+ }
87
93
  :host {
88
94
  display: block;
89
95
  width: 100%;
@@ -15,6 +15,12 @@
15
15
  </script>
16
16
 
17
17
  <style>
18
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
19
+ touch-action does not reach shadow content in iOS Safari. */
20
+ :host,
21
+ * {
22
+ touch-action: manipulation;
23
+ }
18
24
  :host(:state(attr-checked)) label {
19
25
  color: var(--foreground);
20
26
  }
@@ -14,6 +14,12 @@
14
14
  </script>
15
15
 
16
16
  <style>
17
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
18
+ touch-action does not reach shadow content in iOS Safari. */
19
+ :host,
20
+ * {
21
+ touch-action: manipulation;
22
+ }
17
23
  :host {
18
24
  position: relative;
19
25
  display: block;
@@ -14,6 +14,12 @@
14
14
  </script>
15
15
 
16
16
  <style>
17
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
18
+ touch-action does not reach shadow content in iOS Safari. */
19
+ :host,
20
+ * {
21
+ touch-action: manipulation;
22
+ }
17
23
  :host {
18
24
  display: block;
19
25
  }
@@ -43,6 +49,10 @@
43
49
 
44
50
  <custom-element name="ui-collapsible-trigger" slot="trigger">
45
51
  <style>
52
+ :host,
53
+ * {
54
+ touch-action: manipulation;
55
+ }
46
56
  :host {
47
57
  display: flex;
48
58
  align-items: center;
@@ -63,6 +73,10 @@
63
73
 
64
74
  <custom-element name="ui-collapsible-content">
65
75
  <style>
76
+ :host,
77
+ * {
78
+ touch-action: manipulation;
79
+ }
66
80
  :host {
67
81
  display: flex;
68
82
  flex-direction: column;
@@ -89,6 +89,12 @@
89
89
  </script>
90
90
 
91
91
  <style>
92
+ /* A double tap must not zoom the page. Set inside the shadow root, because a page-level
93
+ touch-action does not reach shadow content in iOS Safari. */
94
+ :host,
95
+ * {
96
+ touch-action: manipulation;
97
+ }
92
98
  :host {
93
99
  display: block;
94
100
  min-width: calc(var(--spacing) * 48);
@@ -122,6 +128,12 @@
122
128
  font-size: var(--text-sm);
123
129
  outline: none;
124
130
  }
131
+ /* iOS Safari zooms in on a focused field whose text is under 16px. */
132
+ @media (pointer: coarse) {
133
+ input {
134
+ font-size: var(--text-base);
135
+ }
136
+ }
125
137
  .chevron {
126
138
  width: calc(var(--spacing) * 4);
127
139
  height: calc(var(--spacing) * 4);
@@ -143,6 +155,7 @@
143
155
  box-shadow: var(--shadow-md);
144
156
  inset: auto;
145
157
  position-anchor: --combobox;
158
+ height: fit-content;
146
159
  position-area: bottom span-right;
147
160
  position-try-fallbacks: flip-block;
148
161
  }