contain-css-svelte 0.0.13 → 0.0.15

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 (50) hide show
  1. package/dist/Card.svelte +46 -26
  2. package/dist/controls/Button.svelte +7 -2
  3. package/dist/controls/Checkbox.svelte +6 -1
  4. package/dist/controls/Input.svelte +2 -2
  5. package/dist/controls/MiniButton.svelte +11 -2
  6. package/dist/controls/RadioButton.svelte +11 -5
  7. package/dist/controls/Select.svelte +46 -30
  8. package/dist/controls/TabItem.svelte +2 -2
  9. package/dist/cssprops.js +0 -1
  10. package/dist/dropdowns/DropdownMenu.svelte +20 -17
  11. package/dist/index.d.ts +7 -1
  12. package/dist/index.js +7 -1
  13. package/dist/layout/Accordion.svelte +199 -0
  14. package/dist/layout/Accordion.svelte.d.ts +20 -0
  15. package/dist/layout/Bar.svelte +2 -2
  16. package/dist/layout/Column.svelte +3 -3
  17. package/dist/layout/Columns.svelte +2 -2
  18. package/dist/layout/Container.svelte +46 -26
  19. package/dist/layout/FormItem.svelte +2 -2
  20. package/dist/layout/GridLayout.svelte +2 -2
  21. package/dist/layout/Hero.svelte +46 -26
  22. package/dist/layout/MenuList.svelte +8 -2
  23. package/dist/layout/Page.svelte +2 -2
  24. package/dist/layout/Row.svelte +2 -2
  25. package/dist/layout/Sidebar.svelte +6 -1
  26. package/dist/layout/SplitPane.svelte +2 -2
  27. package/dist/layout/TabBar.svelte +2 -2
  28. package/dist/layout/Table.svelte +217 -0
  29. package/dist/layout/Table.svelte.d.ts +29 -0
  30. package/dist/layout/Tile.svelte +59 -33
  31. package/dist/misc/CodeInner.svelte +2 -109
  32. package/dist/misc/Progress.svelte +288 -0
  33. package/dist/misc/Progress.svelte.d.ts +28 -0
  34. package/dist/overlays/Dialog.svelte +2 -2
  35. package/dist/overlays/Tooltip.svelte +54 -34
  36. package/dist/sass/_affordances.scss +51 -0
  37. package/dist/sass/_box.scss +112 -0
  38. package/dist/sass/_color.scss +8 -0
  39. package/dist/sass/_functions.scss +113 -0
  40. package/dist/sass/_mixins.scss +6 -418
  41. package/dist/sass/_responsive.scss +75 -0
  42. package/dist/sass/_typography.scss +129 -0
  43. package/dist/typography/TextLayout.svelte +46 -26
  44. package/dist/vars/affordances.css +6 -1
  45. package/dist/vars/colors.css +1 -0
  46. package/dist/vars/defaults.css +7 -1
  47. package/dist/vars/themes/typography-airy.css +1 -1
  48. package/dist/vars/themes/typography-browser.css +1 -1
  49. package/dist/vars/themes/typography-carbon.css +1 -1
  50. package/package.json +3 -3
package/dist/Card.svelte CHANGED
@@ -32,13 +32,13 @@ let hasFooter = $$slots.footer;
32
32
  </footer>
33
33
  </div>
34
34
 
35
- <style>/* Convenience groupings */
36
- /* Warning: because we define a fallback
35
+ <style>/* Warning: because we define a fallback
37
36
  media query, the media query can override the container
38
37
  if we stack a bunch of these in a row and aren't thoughtful about the order.
39
38
  Put min-width queries *after* max-width queries so that smaller
40
39
  container queries don't get their styles overridden by large media queries.
41
40
  */
41
+ /* Convenience groupings */
42
42
  .card {
43
43
  --w: var(--card-width);
44
44
  --h: var(--card-height);
@@ -98,6 +98,25 @@ let hasFooter = $$slots.footer;
98
98
  margin-right: auto;
99
99
  margin-bottom: var(--card-heading-margin-bottom, var(--container-heading-margin-bottom, var(--heading-margin-bottom, 0)));
100
100
  margin-top: var(--card-heading-margin-top, var(--container-heading-margin-top, var(--heading-margin-top, 1.5em)));
101
+ /* Typography */
102
+ font-family: var(--card-heading-font-family, var(--container-heading-font-family, var(--heading-font-family, var(--heading-font-family, inherit))));
103
+ text-transform: var(--card-heading-text-transform, var(--container-heading-text-transform, var(--heading-text-transform, var(--heading-text-transform, inherit))));
104
+ text-decoration: var(--card-heading-text-decoration, var(--container-heading-text-decoration, var(--heading-text-decoration, var(--heading-text-decoration, inherit))));
105
+ font-size: var(--card-heading-font-size, var(--container-heading-font-size, var(--heading-font-size, var(--heading-font-size, inherit))));
106
+ font-weight: var(--card-heading-font-weight, var(--container-heading-font-weight, var(--heading-font-weight, var(--heading-font-weight, inherit))));
107
+ line-height: var(--card-heading-line-height, var(--container-heading-line-height, var(--heading-line-height, var(--heading-line-height, inherit))));
108
+ letter-spacing: var(--card-heading-letter-spacing, var(--container-heading-letter-spacing, var(--heading-letter-spacing, var(--heading-letter-spacing, inherit))));
109
+ text-indent: var(--card-heading-indent, var(--container-heading-indent, var(--heading-indent, var(--heading-indent, inherit))));
110
+ font-variant: var(--card-heading-font-variant, var(--container-heading-font-variant, var(--heading-font-variant, var(--heading-font-variant, inherit))));
111
+ text-align: var(--card-heading-text-align, var(--container-heading-text-align, var(--heading-text-align, var(--heading-text-align, inherit))));
112
+ /* font-family: fn.var(--heading-font-family, var(--body-font-family, var(--font-family, inherit)));
113
+ font-size: fn.var(--heading-font-size, inherit);
114
+ font-weight: fn.var(--heading-font-weight, var(--body-font-weight, var(--font-weight, inherit)));
115
+ line-height: fn.var(--heading-line-height, var(--body-line-height, var(--line-height, inherit)));
116
+ letter-spacing: fn.var(--heading-letter-spacing, var(--body-letter-spacing, var(--letter-spacing, inherit)));
117
+ text-indent: fn.var(--heading-indent, var(--body-indent, var(--indent, inherit)));
118
+ font-variant: fn.var(--heading-font-variant, var(--body-font-variant, var(--font-variant, inherit)));
119
+ text-align: fn.var(--heading-text-align, var(--body-text-align, var(--text-align, inherit))); */
101
120
  }
102
121
  .card section :global(p) {
103
122
  font-family: var(--card-paragraph-font-family, var(--container-paragraph-font-family, var(--paragraph-font-family, var(--paragraph-font-family, inherit))));
@@ -128,34 +147,35 @@ let hasFooter = $$slots.footer;
128
147
  text-indent: var(--card-first-paragraph-indent, var(--container-first-paragraph-indent, var(--first-paragraph-indent, var(--first-paragraph-indent, inherit))));
129
148
  font-variant: var(--card-first-paragraph-font-variant, var(--container-first-paragraph-font-variant, var(--first-paragraph-font-variant, var(--first-paragraph-font-variant, inherit))));
130
149
  text-align: var(--card-first-paragraph-text-align, var(--container-first-paragraph-text-align, var(--first-paragraph-text-align, var(--first-paragraph-text-align, inherit))));
150
+ margin-block-start: var(--card-first-paragraph-margin-top, var(--container-first-paragraph-margin-top, var(--first-paragraph-margin-top, 0)));
131
151
  }
132
152
  .card section :global(p:first-of-type::first-line) {
133
- font-family: var(--card-first-line-font-family, var(--container-first-line-font-family, var(--first-line-font-family, var(--first-line-font-family, inherit))));
134
- text-transform: var(--card-first-line-text-transform, var(--container-first-line-text-transform, var(--first-line-text-transform, var(--first-line-text-transform, inherit))));
135
- text-decoration: var(--card-first-line-text-decoration, var(--container-first-line-text-decoration, var(--first-line-text-decoration, var(--first-line-text-decoration, inherit))));
136
- font-size: var(--card-first-line-font-size, var(--container-first-line-font-size, var(--first-line-font-size, var(--first-line-font-size, inherit))));
137
- font-weight: var(--card-first-line-font-weight, var(--container-first-line-font-weight, var(--first-line-font-weight, var(--first-line-font-weight, inherit))));
138
- line-height: var(--card-first-line-line-height, var(--container-first-line-line-height, var(--first-line-line-height, var(--first-line-line-height, inherit))));
139
- letter-spacing: var(--card-first-line-letter-spacing, var(--container-first-line-letter-spacing, var(--first-line-letter-spacing, var(--first-line-letter-spacing, inherit))));
140
- text-indent: var(--card-first-line-indent, var(--container-first-line-indent, var(--first-line-indent, var(--first-line-indent, inherit))));
141
- font-variant: var(--card-first-line-font-variant, var(--container-first-line-font-variant, var(--first-line-font-variant, var(--first-line-font-variant, inherit))));
142
- text-align: var(--card-first-line-text-align, var(--container-first-line-text-align, var(--first-line-text-align, var(--first-line-text-align, inherit))));
153
+ font-family: var(--first-line-font-family, var(--card-first-line-font-family, var(--container-first-line-font-family, var(--first-line-font-family, var(--first-line-font-family, inherit)))));
154
+ text-transform: var(--first-line-text-transform, var(--card-first-line-text-transform, var(--container-first-line-text-transform, var(--first-line-text-transform, var(--first-line-text-transform, inherit)))));
155
+ text-decoration: var(--first-line-text-decoration, var(--card-first-line-text-decoration, var(--container-first-line-text-decoration, var(--first-line-text-decoration, var(--first-line-text-decoration, inherit)))));
156
+ font-size: var(--first-line-font-size, var(--card-first-line-font-size, var(--container-first-line-font-size, var(--first-line-font-size, var(--first-line-font-size, inherit)))));
157
+ font-weight: var(--first-line-font-weight, var(--card-first-line-font-weight, var(--container-first-line-font-weight, var(--first-line-font-weight, var(--first-line-font-weight, inherit)))));
158
+ line-height: var(--first-line-line-height, var(--card-first-line-line-height, var(--container-first-line-line-height, var(--first-line-line-height, var(--first-line-line-height, inherit)))));
159
+ letter-spacing: var(--first-line-letter-spacing, var(--card-first-line-letter-spacing, var(--container-first-line-letter-spacing, var(--first-line-letter-spacing, var(--first-line-letter-spacing, inherit)))));
160
+ text-indent: var(--first-line-indent, var(--card-first-line-indent, var(--container-first-line-indent, var(--first-line-indent, var(--first-line-indent, inherit)))));
161
+ font-variant: var(--first-line-font-variant, var(--card-first-line-font-variant, var(--container-first-line-font-variant, var(--first-line-font-variant, var(--first-line-font-variant, inherit)))));
162
+ text-align: var(--first-line-text-align, var(--card-first-line-text-align, var(--container-first-line-text-align, var(--first-line-text-align, var(--first-line-text-align, inherit)))));
143
163
  }
144
164
  .card section :global(p:first-of-type::first-letter) {
145
- font-family: var(--card-first-letter-font-family, var(--container-first-letter-font-family, var(--container-first-letter-font-family, inherit)));
146
- text-transform: var(--card-first-letter-text-transform, var(--container-first-letter-text-transform, var(--container-first-letter-text-transform, inherit)));
147
- text-decoration: var(--card-first-letter-text-decoration, var(--container-first-letter-text-decoration, var(--container-first-letter-text-decoration, inherit)));
148
- font-size: var(--card-first-letter-font-size, var(--container-first-letter-font-size, var(--container-first-letter-font-size, inherit)));
149
- font-weight: var(--card-first-letter-font-weight, var(--container-first-letter-font-weight, var(--container-first-letter-font-weight, inherit)));
150
- line-height: var(--card-first-letter-line-height, var(--container-first-letter-line-height, var(--container-first-letter-line-height, inherit)));
151
- letter-spacing: var(--card-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, inherit)));
152
- text-indent: var(--card-first-letter-indent, var(--container-first-letter-indent, var(--container-first-letter-indent, inherit)));
153
- font-variant: var(--card-first-letter-font-variant, var(--container-first-letter-font-variant, var(--container-first-letter-font-variant, inherit)));
154
- text-align: var(--card-first-letter-text-align, var(--container-first-letter-text-align, var(--container-first-letter-text-align, inherit)));
155
- background: var(--first-letter-bg, var(--first-line-bg, var(--bg, unset)));
156
- color: var(--first-letter-fg, var(--first-line-fg, var(--fg, unset)));
157
- --link-bg: var(--first-letter-link-bg, var(--first-line-link-bg, var(--first-line-link-bg, inherit)));
158
- --link-fg: var(--first-letter-link-fg, var(--first-line-link-fg, var(--first-line-link-fg, inherit)));
165
+ font-family: var(--first-letter-font-family, var(--card-first-letter-font-family, var(--container-first-letter-font-family, var(--container-first-letter-font-family, inherit))));
166
+ text-transform: var(--first-letter-text-transform, var(--card-first-letter-text-transform, var(--container-first-letter-text-transform, var(--container-first-letter-text-transform, inherit))));
167
+ text-decoration: var(--first-letter-text-decoration, var(--card-first-letter-text-decoration, var(--container-first-letter-text-decoration, var(--container-first-letter-text-decoration, inherit))));
168
+ font-size: var(--first-letter-font-size, var(--card-first-letter-font-size, var(--container-first-letter-font-size, var(--container-first-letter-font-size, inherit))));
169
+ font-weight: var(--first-letter-font-weight, var(--card-first-letter-font-weight, var(--container-first-letter-font-weight, var(--container-first-letter-font-weight, inherit))));
170
+ line-height: var(--first-letter-line-height, var(--card-first-letter-line-height, var(--container-first-letter-line-height, var(--container-first-letter-line-height, inherit))));
171
+ letter-spacing: var(--first-letter-letter-spacing, var(--card-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, inherit))));
172
+ text-indent: var(--first-letter-indent, var(--card-first-letter-indent, var(--container-first-letter-indent, var(--container-first-letter-indent, inherit))));
173
+ font-variant: var(--first-letter-font-variant, var(--card-first-letter-font-variant, var(--container-first-letter-font-variant, var(--container-first-letter-font-variant, inherit))));
174
+ text-align: var(--first-letter-text-align, var(--card-first-letter-text-align, var(--container-first-letter-text-align, var(--container-first-letter-text-align, inherit))));
175
+ --link-bg: var(--card-link-bg, var(--container-link-bg, var(--container-link-bg, inherit)));
176
+ --link-fg: var(--card-link-fg, var(--container-link-fg, var(--container-link-fg, inherit)));
177
+ background: var(--card-first-letter-bg, var(--container-first-letter-bg, var(--first-letter-bg, inherit)));
178
+ color: var(--card-first-letter-fg, var(--container-first-letter-fg, var(--first-letter-fg, inherit)));
159
179
  }
160
180
 
161
181
  @container (max-width: 600px) {
@@ -28,13 +28,13 @@ let cssVars = injectVars($$props, "button", [
28
28
  <span class:hidden={!iconSlotted} class="icon"><slot name="icon" /></span>
29
29
  </button>
30
30
 
31
- <style>/* Convenience groupings */
32
- /* Warning: because we define a fallback
31
+ <style>/* Warning: because we define a fallback
33
32
  media query, the media query can override the container
34
33
  if we stack a bunch of these in a row and aren't thoughtful about the order.
35
34
  Put min-width queries *after* max-width queries so that smaller
36
35
  container queries don't get their styles overridden by large media queries.
37
36
  */
37
+ /* Convenience groupings */
38
38
  button.has-icon {
39
39
  display: flex;
40
40
  align-items: center;
@@ -84,6 +84,11 @@ button:active {
84
84
  filter: var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
85
85
  transform: var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
86
86
  }
87
+ button:disabled {
88
+ cursor: var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
89
+ transform: var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
90
+ filter: var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
91
+ }
87
92
 
88
93
  button.primary {
89
94
  background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
@@ -37,13 +37,13 @@ $: {
37
37
  </div>
38
38
 
39
39
  <style>@charset "UTF-8";
40
- /* Convenience groupings */
41
40
  /* Warning: because we define a fallback
42
41
  media query, the media query can override the container
43
42
  if we stack a bunch of these in a row and aren't thoughtful about the order.
44
43
  Put min-width queries *after* max-width queries so that smaller
45
44
  container queries don't get their styles overridden by large media queries.
46
45
  */
46
+ /* Convenience groupings */
47
47
  .label-sizing-box {
48
48
  position: relative;
49
49
  display: inline-block;
@@ -110,6 +110,11 @@ label:active {
110
110
  filter: var(--checkbox-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
111
111
  transform: var(--checkbox-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
112
112
  }
113
+ label:disabled {
114
+ cursor: var(--checkbox-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
115
+ transform: var(--checkbox-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
116
+ filter: var(--checkbox-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
117
+ }
113
118
 
114
119
  label span {
115
120
  width: var(--label-width);
@@ -6,13 +6,13 @@ export let placeholder = "";
6
6
  {...$$restProps}
7
7
  />
8
8
 
9
- <style>/* Convenience groupings */
10
- /* Warning: because we define a fallback
9
+ <style>/* Warning: because we define a fallback
11
10
  media query, the media query can override the container
12
11
  if we stack a bunch of these in a row and aren't thoughtful about the order.
13
12
  Put min-width queries *after* max-width queries so that smaller
14
13
  container queries don't get their styles overridden by large media queries.
15
14
  */
15
+ /* Convenience groupings */
16
16
  input {
17
17
  font-family: var(--input-font-family, var(--ui-font-family, var(--font-family, unset)));
18
18
  text-transform: var(--input-text-transform, var(--ui-text-transform, var(--text-transform, unset)));
@@ -28,13 +28,13 @@ let style = injectVars($$props, "mini-button", [
28
28
  <slot />
29
29
  </button>
30
30
 
31
- <style>/* Convenience groupings */
32
- /* Warning: because we define a fallback
31
+ <style>/* Warning: because we define a fallback
33
32
  media query, the media query can override the container
34
33
  if we stack a bunch of these in a row and aren't thoughtful about the order.
35
34
  Put min-width queries *after* max-width queries so that smaller
36
35
  container queries don't get their styles overridden by large media queries.
37
36
  */
37
+ /* Convenience groupings */
38
38
  button.primary {
39
39
  background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
40
40
  color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
@@ -68,10 +68,14 @@ button {
68
68
  margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
69
69
  width: var(--mini-button-size, var(--icon-size, 1em));
70
70
  height: var(--mini-button-size, var(--icon-size, 1em));
71
+ /* Make sure we don't shrink in a flex container */
72
+ min-width: var(--mini-button-size, var(--icon-size, 1em));
73
+ min-height: var(--mini-button-size, var(--icon-size, 1em));
71
74
  border-radius: var(--mini-button-radius, 50%);
72
75
  border: var(--mini-button-border, button-border, none);
73
76
  display: inline-grid;
74
77
  place-content: center;
78
+ flex-shrink: 0; /* Don't shrink any more */
75
79
  }
76
80
  button:hover {
77
81
  filter: var(--mini-button-hover-filter, var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.4)))));
@@ -81,6 +85,11 @@ button:active {
81
85
  filter: var(--mini-button-active-filter, var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9)))));
82
86
  transform: var(--mini-button-active-transform, var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none))));
83
87
  }
88
+ button:disabled {
89
+ cursor: var(--mini-button-disabled-cursor, var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed))));
90
+ transform: var(--mini-button-disabled-transform, var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none))));
91
+ filter: var(--mini-button-disabled-filter, var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
92
+ }
84
93
 
85
94
  button.primary {
86
95
  background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
@@ -52,13 +52,13 @@ $: {
52
52
  visibility: hidden;
53
53
  }
54
54
 
55
- /* Convenience groupings */
56
55
  /* Warning: because we define a fallback
57
56
  media query, the media query can override the container
58
57
  if we stack a bunch of these in a row and aren't thoughtful about the order.
59
58
  Put min-width queries *after* max-width queries so that smaller
60
59
  container queries don't get their styles overridden by large media queries.
61
60
  */
61
+ /* Convenience groupings */
62
62
  :root {
63
63
  /* Customize these variables for radio button styling */
64
64
  --radio-button-dot: "•";
@@ -96,6 +96,7 @@ label {
96
96
  box-sizing: border-box;
97
97
  user-select: none;
98
98
  gap: var(--radio-button-space, var(--toggle-space, var(--space-md)));
99
+ white-space: nowrap;
99
100
  cursor: var(--radio-button-cursor, var(--clickable-cursor, var(--cursor, pointer)));
100
101
  transition: filter, transform var(--radio-button-transition, var(--clickable-transition, var(--transition, 300ms)));
101
102
  }
@@ -107,6 +108,11 @@ label:active {
107
108
  filter: var(--radio-button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
108
109
  transform: var(--radio-button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
109
110
  }
111
+ label:disabled {
112
+ cursor: var(--radio-button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
113
+ transform: var(--radio-button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
114
+ filter: var(--radio-button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
115
+ }
110
116
 
111
117
  label span {
112
118
  width: var(--label-width);
@@ -138,10 +144,10 @@ label::before {
138
144
  }
139
145
 
140
146
  label:has(input:checked)::before {
141
- background: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--radio-button-bg, var(--bg, unset)))));
142
- color: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--radio-button-fg, var(--fg, unset)))));
143
- --link-bg: var(--radio-button-checked-link-bg, var(--toggle-on-link-bg, var(--primary-link-bg, var(--radio-button-link-bg, var(--radio-button-link-bg, inherit)))));
144
- --link-fg: var(--radio-button-checked-link-fg, var(--toggle-on-link-fg, var(--primary-link-fg, var(--radio-button-link-fg, var(--radio-button-link-fg, inherit)))));
147
+ background: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--bg, unset))));
148
+ color: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--fg, unset))));
149
+ --link-bg: var(--radio-button-checked-link-bg, var(--toggle-on-link-bg, var(--primary-link-bg, var(--primary-link-bg, inherit))));
150
+ --link-fg: var(--radio-button-checked-link-fg, var(--toggle-on-link-fg, var(--primary-link-fg, var(--primary-link-fg, inherit))));
145
151
  border: var(--radio-button-checked-border, var(--toggle-on-border, var(--border, radio-button)));
146
152
  box-sizing: border-box;
147
153
  width: var(--radio-button-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
@@ -3,6 +3,9 @@ import { onMount, tick } from "svelte";
3
3
  export let value;
4
4
  let selectElement;
5
5
  let observer;
6
+ let resizeObserver;
7
+ let targetWidth = 0;
8
+ let optionButtons = [];
6
9
  onMount(async () => {
7
10
  await tick(); // Ensure slot content is rendered
8
11
  updateOptions();
@@ -15,7 +18,13 @@ onMount(async () => {
15
18
  });
16
19
  });
17
20
  observer.observe(selectElement, { childList: true });
18
- return () => observer.disconnect();
21
+ // Observe size changes in option buttons
22
+ resizeObserver = new ResizeObserver(() => updateTargetWidth());
23
+ optionButtons.forEach(button => resizeObserver.observe(button));
24
+ return () => {
25
+ observer.disconnect();
26
+ resizeObserver.disconnect();
27
+ };
19
28
  });
20
29
  let options = [];
21
30
  let activeOption = null;
@@ -25,7 +34,6 @@ function updateOptions() {
25
34
  }
26
35
  options = [];
27
36
  let optionEls = selectElement.querySelectorAll("option");
28
- let newOptions = [];
29
37
  for (let optionEl of optionEls) {
30
38
  options.push({
31
39
  value: optionEl.value,
@@ -33,38 +41,32 @@ function updateOptions() {
33
41
  });
34
42
  }
35
43
  activeOption = options[selectElement.selectedIndex];
36
- setTimeout(() => {
37
- let maxWidth = 0;
38
- for (let button of optionButtons) {
39
- // measure the width of each button...
40
- if (button.offsetWidth > maxWidth) {
41
- maxWidth = button.offsetWidth;
42
- }
44
+ updateTargetWidth();
45
+ }
46
+ function updateTargetWidth() {
47
+ let maxWidth = 0;
48
+ for (let button of optionButtons) {
49
+ if (button.offsetWidth > maxWidth) {
50
+ maxWidth = button.offsetWidth;
43
51
  }
44
- targetWidth = maxWidth;
45
- }, 10);
52
+ }
53
+ targetWidth = maxWidth || 150; // Fallback width if measurement fails
46
54
  }
47
55
  function setValue(idx) {
48
- console.log("Button to set", idx);
49
56
  selectElement.selectedIndex = idx;
50
57
  selectElement.dispatchEvent(new Event("change"));
51
58
  activeOption = options[idx];
52
59
  }
53
60
  async function updateOption(value) {
54
- /* Wait for svelte to update its internal select component */
55
61
  await tick();
56
62
  if (selectElement) {
57
- /* Use svelte's magic to update our option */
58
63
  activeOption = options[selectElement.selectedIndex];
59
64
  }
60
65
  }
61
66
  $: updateOption(value);
62
- let targetWidth;
63
- let optionButtons = [];
64
67
  </script>
65
68
 
66
- <select bind:value on:change bind:this={selectElement}
67
- {...$$restProps}>
69
+ <select bind:value on:change bind:this={selectElement} {...$$restProps}>
68
70
  <slot />
69
71
  </select>
70
72
  <div class="dropdown-wrapper" style:--target-width="{targetWidth}px">
@@ -85,32 +87,32 @@ let optionButtons = [];
85
87
  </div>
86
88
 
87
89
  <style>@charset "UTF-8";
88
- /* Convenience groupings */
89
90
  /* Warning: because we define a fallback
90
91
  media query, the media query can override the container
91
92
  if we stack a bunch of these in a row and aren't thoughtful about the order.
92
93
  Put min-width queries *after* max-width queries so that smaller
93
94
  container queries don't get their styles overridden by large media queries.
94
95
  */
96
+ /* Convenience groupings */
95
97
  select,
96
98
  .dropdown-wrapper > :global(.dropdown-menu > button) {
97
99
  box-sizing: border-box;
98
100
  border: var(--select-border, var(--input-border, var(--menu-border, var(--control-border, var(--container-border, var(--border, var(--border-width, 1px) var(--border-style, solid) var(--border-color, var(--fg))))))));
99
- /* border-top: var-with-fallbacks(--border-top,
101
+ /* border-top: fn.var-with-fallbacks(--border-top,
100
102
  append($prefixes,
101
- var-with-fallbacks(--border,$prefixes...)
103
+ fn.var-with-fallbacks(--border,$prefixes...)
102
104
  )...) */
103
- /* border-right: var-with-fallbacks(--border-right,
105
+ /* border-right: fn.var-with-fallbacks(--border-right,
104
106
  append($prefixes,
105
- var-with-fallbacks(--border,$prefixes...)
107
+ fn.var-with-fallbacks(--border,$prefixes...)
106
108
  )...) */
107
- /* border-bottom: var-with-fallbacks(--border-bottom,
109
+ /* border-bottom: fn.var-with-fallbacks(--border-bottom,
108
110
  append($prefixes,
109
- var-with-fallbacks(--border,$prefixes...)
111
+ fn.var-with-fallbacks(--border,$prefixes...)
110
112
  )...) */
111
- /* border-left: var-with-fallbacks(--border-left,
113
+ /* border-left: fn.var-with-fallbacks(--border-left,
112
114
  append($prefixes,
113
- var-with-fallbacks(--border,$prefixes...)
115
+ fn.var-with-fallbacks(--border,$prefixes...)
114
116
  )...) */
115
117
  padding: var(--select-padding, var(--input-padding, var(--menu-padding, var(--control-padding, var(--container-padding, var(--padding, 4px))))));
116
118
  border-radius: var(--select-square-radius, var(--input-square-radius, var(--menu-square-radius, var(--control-square-radius, var(--container-square-radius, var(--square-radius, 0))))));
@@ -118,13 +120,27 @@ select,
118
120
  color: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--container-fg, var(--fg, unset))))));
119
121
  --link-bg: var(--select-link-bg, var(--input-link-bg, var(--menu-link-bg, var(--control-link-bg, var(--container-link-bg, var(--container-link-bg, inherit))))));
120
122
  --link-fg: var(--select-link-fg, var(--input-link-fg, var(--menu-link-fg, var(--control-link-fg, var(--container-link-fg, var(--container-link-fg, inherit))))));
121
- width: var(--select-width, var(--target-width, var(--dropdown-menu-width, min(12em, 100cw))));
123
+ width: var(--select-width, var(--target-width, var(--dropdown-menu-width, min(12em, 100vw))));
122
124
  text-overflow: ellipsis;
125
+ font-family: var(--select-font-family, var(--input-font-family, var(--ui-font-family, var(--font-family, unset))));
126
+ text-transform: var(--select-text-transform, var(--input-text-transform, var(--ui-text-transform, var(--text-transform, unset))));
127
+ text-decoration: var(--select-text-decoration, var(--input-text-decoration, var(--ui-text-decoration, var(--text-decoration, unset))));
128
+ font-size: var(--select-font-size, var(--input-font-size, var(--ui-font-size, var(--font-size, unset))));
129
+ font-weight: var(--select-font-weight, var(--input-font-weight, var(--ui-font-weight, var(--font-weight, unset))));
130
+ line-height: var(--select-line-height, var(--input-line-height, var(--ui-line-height, var(--line-height, unset))));
131
+ letter-spacing: var(--select-letter-spacing, var(--input-letter-spacing, var(--ui-letter-spacing, var(--letter-spacing, unset))));
132
+ margin-top: var(--select-margin, var(--input-margin, var(--ui-margin, var(--margin, unset))));
133
+ margin-top: var(--select-margin-top, var(--input-margin-top, var(--ui-margin-top, var(--margin-top, unset))));
134
+ margin-bottom: var(--select-margin, var(--input-margin, var(--ui-margin, var(--margin, unset))));
135
+ margin-bottom: var(--select-margin-bottom, var(--input-margin-bottom, var(--ui-margin-bottom, var(--margin-bottom, unset))));
136
+ text-indent: var(--select-indent, var(--input-indent, var(--ui-indent, var(--indent, unset))));
137
+ font-variant: var(--select-font-variant, var(--input-font-variant, var(--ui-font-variant, var(--font-variant, unset))));
138
+ text-align: var(--select-text-align, var(--input-text-align, var(--ui-text-align, var(--text-align, unset))));
123
139
  }
124
140
 
125
141
  .select-dropdown-label {
126
142
  overflow: hidden;
127
- text-wrap: nowrap;
143
+ white-space: nowrap;
128
144
  text-overflow: ellipsis;
129
145
  }
130
146
 
@@ -151,7 +167,7 @@ select,
151
167
  }
152
168
 
153
169
  .select-dropdown::after {
154
- content: var(--select-arrow, "⌄"); /* ↓ */
170
+ content: var(--select-arrow, "⌄");
155
171
  margin-left: auto;
156
172
  transform: var(--select-arrow-transform, scaleX(1.5) translateY(-70%));
157
173
  display: inline-grid;
@@ -25,13 +25,13 @@ let style = injectVars($$props, "tab", [
25
25
  </Button>
26
26
  </div>
27
27
 
28
- <style>/* Convenience groupings */
29
- /* Warning: because we define a fallback
28
+ <style>/* Warning: because we define a fallback
30
29
  media query, the media query can override the container
31
30
  if we stack a bunch of these in a row and aren't thoughtful about the order.
32
31
  Put min-width queries *after* max-width queries so that smaller
33
32
  container queries don't get their styles overridden by large media queries.
34
33
  */
34
+ /* Convenience groupings */
35
35
  div,
36
36
  span {
37
37
  display: contents;
package/dist/cssprops.js CHANGED
@@ -186,4 +186,3 @@ for (let c of components) {
186
186
  cssProperties.push(...c.props);
187
187
  }
188
188
  cssProperties.sort();
189
- console.log(cssProperties);
@@ -35,20 +35,15 @@ function computePosition() {
35
35
  dropdownTop = Math.max(0, window.innerHeight - dropdownRect.height);
36
36
  }
37
37
  dropdownMaxHeight = window.innerHeight - dropdownTop;
38
- console.log("Computed top", dropdownTop, "left", dropdownLeft, "maxHeight", dropdownMaxHeight);
39
38
  }
40
39
  function triggerMenu(e) {
41
- console.log("Triggered...");
42
40
  let isOpen = popoverDiv.matches(":popover-open");
43
- console.log("Popover is currently open?", isOpen);
44
41
  if (!isOpen) {
45
- console.log("Opening popover");
46
42
  injectVariablesIntoDropdown();
47
43
  computePosition();
48
44
  }
49
45
  }
50
46
  function dismissPopover(e) {
51
- console.log("Dismissing popover");
52
47
  popoverDiv.hidePopover();
53
48
  }
54
49
  let searchString = "";
@@ -76,12 +71,10 @@ function handleKeystroke(event) {
76
71
  }
77
72
  }
78
73
  function maybeFocusMatch(searchString) {
79
- console.log("Maybe focus", searchString);
80
74
  let focusableItems = dropdownContentElement.querySelectorAll("a,button,[tabindex]");
81
75
  for (let element of focusableItems) {
82
76
  if (element.textContent &&
83
77
  element.textContent.toLowerCase().startsWith(searchString.toLowerCase())) {
84
- console.log("Found", element);
85
78
  if (element.focus) {
86
79
  element.focus();
87
80
  return;
@@ -146,13 +139,13 @@ let popoverDiv;
146
139
  </div>
147
140
  </nav>
148
141
 
149
- <style>/* Convenience groupings */
150
- /* Warning: because we define a fallback
142
+ <style>/* Warning: because we define a fallback
151
143
  media query, the media query can override the container
152
144
  if we stack a bunch of these in a row and aren't thoughtful about the order.
153
145
  Put min-width queries *after* max-width queries so that smaller
154
146
  container queries don't get their styles overridden by large media queries.
155
147
  */
148
+ /* Convenience groupings */
156
149
  button {
157
150
  background: var(--menu-bg, var(--button-bg, var(--container-bg, var(--bg, unset))));
158
151
  color: var(--menu-fg, var(--button-fg, var(--container-fg, var(--fg, unset))));
@@ -178,6 +171,11 @@ button:active {
178
171
  filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
179
172
  transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
180
173
  }
174
+ button:disabled {
175
+ cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
176
+ transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
177
+ filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
178
+ }
181
179
 
182
180
  .menu {
183
181
  background: var(--menu-bg, var(--container-bg, var(--bg, unset)));
@@ -217,6 +215,11 @@ button:active {
217
215
  filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
218
216
  transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
219
217
  }
218
+ .menu:disabled {
219
+ cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
220
+ transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
221
+ filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
222
+ }
220
223
 
221
224
  .dropdown-menu {
222
225
  font-family: var(--menu-font-family, var(--container-font-family, var(--font-family, unset)));
@@ -271,21 +274,21 @@ button:active {
271
274
  box-shadow: var(--dropdown-menu-shadow-distance, var(--dropdown-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--dropdown-menu-shadow-distance, var(--dropdown-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--dropdown-menu-shadow-blur, var(--dropdown-shadow-blur, var(--shadow-blur, var(--space)))) var(--dropdown-menu-shadow-color, var(--dropdown-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4))));
272
275
  box-sizing: border-box;
273
276
  border: var(--dropdown-menu-border, var(--menu-border, var(--container-border, var(--border, var(--border-width, 1px) var(--border-style, solid) var(--border-color, var(--fg))))));
274
- /* border-top: var-with-fallbacks(--border-top,
277
+ /* border-top: fn.var-with-fallbacks(--border-top,
275
278
  append($prefixes,
276
- var-with-fallbacks(--border,$prefixes...)
279
+ fn.var-with-fallbacks(--border,$prefixes...)
277
280
  )...) */
278
- /* border-right: var-with-fallbacks(--border-right,
281
+ /* border-right: fn.var-with-fallbacks(--border-right,
279
282
  append($prefixes,
280
- var-with-fallbacks(--border,$prefixes...)
283
+ fn.var-with-fallbacks(--border,$prefixes...)
281
284
  )...) */
282
- /* border-bottom: var-with-fallbacks(--border-bottom,
285
+ /* border-bottom: fn.var-with-fallbacks(--border-bottom,
283
286
  append($prefixes,
284
- var-with-fallbacks(--border,$prefixes...)
287
+ fn.var-with-fallbacks(--border,$prefixes...)
285
288
  )...) */
286
- /* border-left: var-with-fallbacks(--border-left,
289
+ /* border-left: fn.var-with-fallbacks(--border-left,
287
290
  append($prefixes,
288
- var-with-fallbacks(--border,$prefixes...)
291
+ fn.var-with-fallbacks(--border,$prefixes...)
289
292
  )...) */
290
293
  padding: var(--dropdown-menu-padding, var(--menu-padding, var(--container-padding, var(--padding, 4px))));
291
294
  border-radius: var(--dropdown-menu-square-radius, var(--menu-square-radius, var(--container-square-radius, var(--square-radius, 0))));
package/dist/index.d.ts CHANGED
@@ -25,11 +25,17 @@ import Code from "./misc/Code.svelte";
25
25
  import TextLayout from "./typography/TextLayout.svelte";
26
26
  import Sidebar from "./layout/Sidebar.svelte";
27
27
  import Dialog from "./overlays/Dialog.svelte";
28
+ import Progress from "./misc/Progress.svelte";
29
+ import Tooltip from "./overlays/Tooltip.svelte";
30
+ import Table from "./layout/Table.svelte";
31
+ import Accordion from "./layout/Accordion.svelte";
28
32
  export { Hero };
29
33
  export { TabItem };
30
34
  export { Button, Checkbox, Input, Slider, RadioButton, MiniButton, Select };
31
35
  export { Bar, Container, GridLayout, MenuList, Page, ResponsiveText, TabBar };
32
- export { TextLayout, Code };
36
+ export { TextLayout, Code, Accordion };
33
37
  export { Card, Tile, FormItem };
34
38
  export { Row, Column, Columns, SplitPane, Sidebar };
35
39
  export { Dialog };
40
+ export { Progress, Tooltip };
41
+ export { Table };
package/dist/index.js CHANGED
@@ -26,11 +26,17 @@ import Code from "./misc/Code.svelte";
26
26
  import TextLayout from "./typography/TextLayout.svelte";
27
27
  import Sidebar from "./layout/Sidebar.svelte";
28
28
  import Dialog from "./overlays/Dialog.svelte";
29
+ import Progress from "./misc/Progress.svelte";
30
+ import Tooltip from "./overlays/Tooltip.svelte";
31
+ import Table from "./layout/Table.svelte";
32
+ import Accordion from "./layout/Accordion.svelte";
29
33
  export { Hero };
30
34
  export { TabItem };
31
35
  export { Button, Checkbox, Input, Slider, RadioButton, MiniButton, Select };
32
36
  export { Bar, Container, GridLayout, MenuList, Page, ResponsiveText, TabBar };
33
- export { TextLayout, Code };
37
+ export { TextLayout, Code, Accordion };
34
38
  export { Card, Tile, FormItem };
35
39
  export { Row, Column, Columns, SplitPane, Sidebar };
36
40
  export { Dialog };
41
+ export { Progress, Tooltip };
42
+ export { Table };