@visitwonders/assembly 0.1.0 → 0.3.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 (256) hide show
  1. package/declarations/action/button-group.d.ts +89 -0
  2. package/declarations/action/button-group.d.ts.map +1 -0
  3. package/declarations/action/button.d.ts +4 -0
  4. package/declarations/action/button.d.ts.map +1 -1
  5. package/declarations/action/index.d.ts +1 -0
  6. package/declarations/action/index.d.ts.map +1 -1
  7. package/declarations/components/form/checkbox.d.ts +0 -65
  8. package/declarations/components/form/control.d.ts +0 -36
  9. package/declarations/components/form/error-message.d.ts +0 -22
  10. package/declarations/components/form/field.d.ts +0 -21
  11. package/declarations/components/form/form.d.ts +0 -14
  12. package/declarations/components/form/help-text.d.ts +0 -14
  13. package/declarations/components/form/index.d.ts +0 -15
  14. package/declarations/components/form/input.d.ts +0 -80
  15. package/declarations/components/form/label.d.ts +0 -34
  16. package/declarations/components/form/radio-group.d.ts +0 -43
  17. package/declarations/components/form/radio.d.ts +0 -54
  18. package/declarations/components/form/search-input.d.ts +0 -35
  19. package/declarations/components/form/select.d.ts +0 -36
  20. package/declarations/components/form/test.d.ts +0 -11
  21. package/declarations/components/form/textarea.d.ts +0 -79
  22. package/declarations/components/form/toggle.d.ts +0 -23
  23. package/declarations/components/primitives/grid-item.d.ts +0 -21
  24. package/declarations/components/primitives/grid.d.ts +0 -49
  25. package/declarations/components/primitives/h-stack.d.ts +0 -17
  26. package/declarations/components/primitives/heading.d.ts +0 -52
  27. package/declarations/components/primitives/image.d.ts +0 -24
  28. package/declarations/components/primitives/index.d.ts +0 -8
  29. package/declarations/components/primitives/link.d.ts +0 -16
  30. package/declarations/components/primitives/stack.d.ts +0 -23
  31. package/declarations/components/primitives/text.d.ts +0 -50
  32. package/declarations/components/primitives/v-stack.d.ts +0 -16
  33. package/declarations/components/ui/badge.d.ts +0 -14
  34. package/declarations/components/ui/button.d.ts +0 -32
  35. package/declarations/components/ui/card.d.ts +0 -27
  36. package/declarations/components/ui/description-list.d.ts +0 -22
  37. package/declarations/components/ui/drawer.d.ts +0 -14
  38. package/declarations/components/ui/icon-button.d.ts +0 -21
  39. package/declarations/components/ui/icon.d.ts +0 -21
  40. package/declarations/components/ui/index.d.ts +0 -17
  41. package/declarations/components/ui/modal.d.ts +0 -14
  42. package/declarations/components/ui/page-header.d.ts +0 -16
  43. package/declarations/components/ui/skeleton-card.d.ts +0 -17
  44. package/declarations/components/ui/skeleton-text.d.ts +0 -16
  45. package/declarations/components/ui/skeleton.d.ts +0 -20
  46. package/declarations/components/ui/spinner.d.ts +0 -11
  47. package/declarations/components/ui/tab-nav/index.d.ts +0 -36
  48. package/declarations/components/ui/table/body.d.ts +0 -11
  49. package/declarations/components/ui/table/caption.d.ts +0 -18
  50. package/declarations/components/ui/table/cell.d.ts +0 -31
  51. package/declarations/components/ui/table/footer.d.ts +0 -11
  52. package/declarations/components/ui/table/header-cell.d.ts +0 -35
  53. package/declarations/components/ui/table/header.d.ts +0 -11
  54. package/declarations/components/ui/table/row.d.ts +0 -21
  55. package/declarations/components/ui/table_old.d.ts +0 -29
  56. package/declarations/data/index.d.ts +1 -0
  57. package/declarations/data/index.d.ts.map +1 -1
  58. package/declarations/data/sortable-list.d.ts +33 -0
  59. package/declarations/data/sortable-list.d.ts.map +1 -0
  60. package/declarations/data/table.d.ts +0 -1
  61. package/declarations/data/table.d.ts.map +1 -1
  62. package/declarations/form/calendar.d.ts +0 -1
  63. package/declarations/form/calendar.d.ts.map +1 -1
  64. package/declarations/form/control.d.ts +5 -1
  65. package/declarations/form/control.d.ts.map +1 -1
  66. package/declarations/form/country-select-field.d.ts +6 -0
  67. package/declarations/form/country-select-field.d.ts.map +1 -1
  68. package/declarations/form/country-select.d.ts +0 -1
  69. package/declarations/form/country-select.d.ts.map +1 -1
  70. package/declarations/form/date-picker-field.d.ts +6 -0
  71. package/declarations/form/date-picker-field.d.ts.map +1 -1
  72. package/declarations/form/date-picker.d.ts +0 -1
  73. package/declarations/form/date-picker.d.ts.map +1 -1
  74. package/declarations/form/date-range-picker-field.d.ts +6 -0
  75. package/declarations/form/date-range-picker-field.d.ts.map +1 -1
  76. package/declarations/form/date-range-picker.d.ts +0 -1
  77. package/declarations/form/date-range-picker.d.ts.map +1 -1
  78. package/declarations/form/fieldset.d.ts +22 -0
  79. package/declarations/form/fieldset.d.ts.map +1 -0
  80. package/declarations/form/form.d.ts +0 -1
  81. package/declarations/form/form.d.ts.map +1 -1
  82. package/declarations/form/index.d.ts +1 -0
  83. package/declarations/form/index.d.ts.map +1 -1
  84. package/declarations/form/label.d.ts +4 -0
  85. package/declarations/form/label.d.ts.map +1 -1
  86. package/declarations/form/listbox.d.ts +0 -1
  87. package/declarations/form/listbox.d.ts.map +1 -1
  88. package/declarations/form/money-field.d.ts +6 -1
  89. package/declarations/form/money-field.d.ts.map +1 -1
  90. package/declarations/form/multi-select.d.ts +0 -1
  91. package/declarations/form/multi-select.d.ts.map +1 -1
  92. package/declarations/form/number-field.d.ts +9 -1
  93. package/declarations/form/number-field.d.ts.map +1 -1
  94. package/declarations/form/select-field.d.ts +4 -1
  95. package/declarations/form/select-field.d.ts.map +1 -1
  96. package/declarations/form/test.d.ts +0 -11
  97. package/declarations/form/text-field.d.ts +9 -0
  98. package/declarations/form/text-field.d.ts.map +1 -1
  99. package/declarations/form/time-picker-field.d.ts +6 -0
  100. package/declarations/form/time-picker-field.d.ts.map +1 -1
  101. package/declarations/form/time-picker.d.ts +0 -1
  102. package/declarations/form/time-picker.d.ts.map +1 -1
  103. package/declarations/form/toggle.d.ts +4 -0
  104. package/declarations/form/toggle.d.ts.map +1 -1
  105. package/declarations/layout/index.d.ts +1 -0
  106. package/declarations/layout/index.d.ts.map +1 -1
  107. package/declarations/layout/panel.d.ts +34 -0
  108. package/declarations/layout/panel.d.ts.map +1 -0
  109. package/declarations/layout/stack.d.ts +1 -1
  110. package/declarations/media/icon.d.ts +0 -1
  111. package/declarations/media/icon.d.ts.map +1 -1
  112. package/declarations/media/image.d.ts +1 -1
  113. package/declarations/overlay/blanket.d.ts +0 -1
  114. package/declarations/overlay/blanket.d.ts.map +1 -1
  115. package/declarations/overlay/drawer.d.ts +4 -1
  116. package/declarations/overlay/drawer.d.ts.map +1 -1
  117. package/declarations/overlay/modal.d.ts +0 -1
  118. package/declarations/overlay/modal.d.ts.map +1 -1
  119. package/declarations/overlay/popover.d.ts +0 -1
  120. package/declarations/overlay/popover.d.ts.map +1 -1
  121. package/declarations/overlay/toast.d.ts +0 -1
  122. package/declarations/overlay/toast.d.ts.map +1 -1
  123. package/declarations/overlay/tooltip.d.ts +0 -1
  124. package/declarations/overlay/tooltip.d.ts.map +1 -1
  125. package/declarations/primitives/grid-item.d.ts +0 -21
  126. package/declarations/primitives/grid.d.ts +0 -49
  127. package/declarations/primitives/h-stack.d.ts +0 -17
  128. package/declarations/primitives/heading.d.ts +0 -52
  129. package/declarations/primitives/image.d.ts +0 -24
  130. package/declarations/primitives/index.d.ts +0 -4
  131. package/declarations/primitives/link.d.ts +0 -16
  132. package/declarations/primitives/stack.d.ts +0 -23
  133. package/declarations/primitives/text.d.ts +0 -50
  134. package/declarations/primitives/v-stack.d.ts +0 -16
  135. package/declarations/status/badge.d.ts +0 -1
  136. package/declarations/status/badge.d.ts.map +1 -1
  137. package/declarations/status/skeleton-avatar.d.ts +1 -1
  138. package/declarations/status/skeleton-avatar.d.ts.map +1 -1
  139. package/declarations/status/skeleton-button.d.ts +1 -1
  140. package/declarations/status/skeleton-button.d.ts.map +1 -1
  141. package/declarations/status/skeleton-image.d.ts +1 -1
  142. package/declarations/status/skeleton-image.d.ts.map +1 -1
  143. package/declarations/status/skeleton-text.d.ts +1 -1
  144. package/declarations/status/skeleton-text.d.ts.map +1 -1
  145. package/declarations/status/skeleton.d.ts +1 -1
  146. package/declarations/status/skeleton.d.ts.map +1 -1
  147. package/declarations/status/tag.d.ts +0 -1
  148. package/declarations/status/tag.d.ts.map +1 -1
  149. package/declarations/typography/link.d.ts +0 -16
  150. package/declarations/typography/text.d.ts +2 -0
  151. package/declarations/typography/text.d.ts.map +1 -1
  152. package/declarations/ui/button.d.ts +0 -50
  153. package/declarations/ui/icon.d.ts +0 -21
  154. package/dist/_app_/action/button-group.js +1 -0
  155. package/dist/_app_/data/sortable-list.js +1 -0
  156. package/dist/_app_/form/fieldset.js +1 -0
  157. package/dist/_app_/layout/panel.js +1 -0
  158. package/dist/action/button-group.css +18 -0
  159. package/dist/action/button-group.js +130 -0
  160. package/dist/action/button-group.js.map +1 -0
  161. package/dist/action/button.css +152 -0
  162. package/dist/action/button.js +1 -1
  163. package/dist/action/index.js +1 -0
  164. package/dist/action/index.js.map +1 -1
  165. package/dist/data/index.js +1 -0
  166. package/dist/data/index.js.map +1 -1
  167. package/dist/data/sortable-list-css-211fcfeedc08052ccbac7f51549ce0b1.css +89 -0
  168. package/dist/data/sortable-list.js +62 -0
  169. package/dist/data/sortable-list.js.map +1 -0
  170. package/dist/data/table.css +50 -49
  171. package/dist/data/table.js +1 -1
  172. package/dist/form/checkbox.css +3 -3
  173. package/dist/form/control-css-02e93d930aecac651d5c69dc10a83504.css +36 -0
  174. package/dist/form/control.js +2 -2
  175. package/dist/form/country-select-field.js +1 -1
  176. package/dist/form/country-select-field.js.map +1 -1
  177. package/dist/form/country-select.css +1 -1
  178. package/dist/form/date-picker-field.js +1 -1
  179. package/dist/form/date-picker-field.js.map +1 -1
  180. package/dist/form/date-range-picker-field.js +1 -1
  181. package/dist/form/date-range-picker-field.js.map +1 -1
  182. package/dist/form/field.css +3 -3
  183. package/dist/form/fieldset.css +65 -0
  184. package/dist/form/fieldset.js +20 -0
  185. package/dist/form/fieldset.js.map +1 -0
  186. package/dist/form/help-text.css +1 -1
  187. package/dist/form/index.js +1 -0
  188. package/dist/form/index.js.map +1 -1
  189. package/dist/form/input.css +1 -0
  190. package/dist/form/label.css +15 -1
  191. package/dist/form/label.js +10 -4
  192. package/dist/form/money-field.js +1 -1
  193. package/dist/form/multi-select.css +1 -1
  194. package/dist/form/number-field.css +1 -0
  195. package/dist/form/number-field.js +1 -1
  196. package/dist/form/radio.css +3 -3
  197. package/dist/form/select-field.js +1 -1
  198. package/dist/form/select-field.js.map +1 -1
  199. package/dist/form/select.css +1 -1
  200. package/dist/form/{text-field-css-f60360f3f8aaf4da664eaccd1bcc9f8f.css → text-field-css-754feeb82dbd9fc9afdc1f00dceb13ad.css} +22 -1
  201. package/dist/form/text-field.js +2 -2
  202. package/dist/form/textarea.css +2 -1
  203. package/dist/form/time-picker-field.js +1 -1
  204. package/dist/form/time-picker-field.js.map +1 -1
  205. package/dist/form/toggle.css +27 -1
  206. package/dist/form/toggle.js +4 -1
  207. package/dist/layout/{divider-css-1ba104b9c606cbd1f542b45640fb5f2b.css → divider-css-7e0cc7d350e31172582851c6cb2cf586.css} +2 -2
  208. package/dist/layout/divider.js +1 -1
  209. package/dist/layout/{grid-css-086976eb41686e3714554f56c098d3d5.css → grid-css-c8259b34d7062f44e78f0a2cc139cb44.css} +13 -13
  210. package/dist/layout/grid.js +1 -1
  211. package/dist/layout/index.js +1 -0
  212. package/dist/layout/index.js.map +1 -1
  213. package/dist/layout/panel.css +229 -0
  214. package/dist/layout/panel.js +32 -0
  215. package/dist/layout/panel.js.map +1 -0
  216. package/dist/overlay/blanket.css +12 -11
  217. package/dist/overlay/blanket.js +1 -1
  218. package/dist/overlay/drawer.css +99 -62
  219. package/dist/overlay/drawer.js +7 -4
  220. package/dist/overlay/modal.css +22 -21
  221. package/dist/overlay/modal.js +4 -4
  222. package/dist/overlay/popover.css +30 -29
  223. package/dist/overlay/popover.js +4 -4
  224. package/dist/overlay/toast.css +49 -48
  225. package/dist/overlay/toast.js +2 -2
  226. package/dist/overlay/tooltip.css +38 -37
  227. package/dist/overlay/tooltip.js +2 -2
  228. package/dist/skeleton-shared-BTA5oAjw.js +3 -0
  229. package/dist/skeleton-shared-BTA5oAjw.js.map +1 -0
  230. package/dist/status/badge.css +30 -29
  231. package/dist/status/badge.js +1 -1
  232. package/dist/status/skeleton-avatar.js +1 -1
  233. package/dist/status/skeleton-avatar.js.map +1 -1
  234. package/dist/status/skeleton-button.js +1 -1
  235. package/dist/status/skeleton-button.js.map +1 -1
  236. package/dist/status/skeleton-image.js +1 -1
  237. package/dist/status/skeleton-image.js.map +1 -1
  238. package/dist/status/skeleton-text.js +1 -1
  239. package/dist/status/skeleton-text.js.map +1 -1
  240. package/dist/status/skeleton.js +1 -1
  241. package/dist/status/skeleton.js.map +1 -1
  242. package/dist/status/tag.css +50 -51
  243. package/dist/status/tag.js +1 -1
  244. package/dist/styles/base/typography.css +1 -1
  245. package/dist/styles/primitive/typography.css +10 -7
  246. package/dist/styles/semantic/typography.css +4 -4
  247. package/dist/styles.css +15 -12
  248. package/dist/typography/{heading-css-8850735eabc2efb34f15240b852c99e7.css → heading-css-726c4c3109f2b741657733e1ba103c67.css} +9 -9
  249. package/dist/typography/heading.js +1 -1
  250. package/dist/typography/{text-css-73e03f1b750b32d7064d4ef87562289c.css → text-css-935f55e9cd74b06a5ce61330c4c79ef9.css} +6 -1
  251. package/dist/typography/text.js +5 -2
  252. package/package.json +26 -19
  253. package/dist/form/control-css-6c81caf37fd813b36033091d5340bc70.css +0 -20
  254. package/dist/skeleton-CL5Pcwrk.js +0 -3
  255. package/dist/skeleton-CL5Pcwrk.js.map +0 -1
  256. /package/dist/status/{skeleton.css → skeleton-shared.css} +0 -0
@@ -0,0 +1,65 @@
1
+ /* src/form/fieldset.css */
2
+ .fieldset_ef4a2e6ab {
3
+ border: none;
4
+ margin: 0;
5
+ padding: 0;
6
+ display: flex;
7
+ flex-direction: column;
8
+ }
9
+
10
+ /* Legend */
11
+ .legend_ef4a2e6ab {
12
+ display: block;
13
+ font-size: var(--font-size-xs);
14
+ font-weight: var(--font-weight-semibold);
15
+ color: var(--color-text-secondary);
16
+ letter-spacing: 0.05em;
17
+ text-transform: uppercase;
18
+ line-height: var(--line-height-normal);
19
+ padding: 0;
20
+ margin-bottom: var(--spacing-3);
21
+ }
22
+
23
+ .fieldset_ef4a2e6ab[data-disabled="true"] .legend_ef4a2e6ab {
24
+ color: var(--color-text-disabled);
25
+ }
26
+
27
+ /* Description */
28
+ .description_ef4a2e6ab {
29
+ margin: 0;
30
+ font-size: var(--font-size-xs);
31
+ line-height: var(--line-height-normal);
32
+ color: var(--color-text-secondary);
33
+ margin-top: calc(-1 * var(--spacing-2));
34
+ margin-bottom: var(--spacing-3);
35
+ }
36
+
37
+ /* Content */
38
+ .content_ef4a2e6ab {
39
+ display: flex;
40
+ flex-direction: column;
41
+ }
42
+
43
+ .content_ef4a2e6ab[data-gap="none"] {
44
+ gap: 0;
45
+ }
46
+
47
+ .content_ef4a2e6ab[data-gap="xs"] {
48
+ gap: var(--spacing-gap-xs);
49
+ }
50
+
51
+ .content_ef4a2e6ab[data-gap="sm"] {
52
+ gap: var(--spacing-gap-sm);
53
+ }
54
+
55
+ .content_ef4a2e6ab[data-gap="md"] {
56
+ gap: var(--spacing-gap-md);
57
+ }
58
+
59
+ .content_ef4a2e6ab[data-gap="lg"] {
60
+ gap: var(--spacing-gap-lg);
61
+ }
62
+
63
+ .content_ef4a2e6ab[data-gap="xl"] {
64
+ gap: var(--spacing-gap-xl);
65
+ }
@@ -0,0 +1,20 @@
1
+ import "./fieldset.css"
2
+ import Component from '@glimmer/component';
3
+ import { precompileTemplate } from '@ember/template-compilation';
4
+ import { setComponentTemplate } from '@ember/component';
5
+
6
+ ;
7
+
8
+ class Fieldset extends Component {
9
+ get gap() {
10
+ return this.args.gap ?? 'md';
11
+ }
12
+ static {
13
+ setComponentTemplate(precompileTemplate("<fieldset class=\"fieldset_ef4a2e6ab\" data-disabled={{if @isDisabled \"true\"}} data-test-fieldset ...attributes>\n {{#if @legend}}\n <legend class=\"legend_ef4a2e6ab\" data-test-fieldset-legend>\n {{@legend}}\n </legend>\n {{/if}}\n\n {{#if @description}}\n <p class=\"description_ef4a2e6ab\" data-test-fieldset-description>\n {{@description}}\n </p>\n {{/if}}\n\n <div class=\"content_ef4a2e6ab\" data-gap={{this.gap}} data-test-fieldset-content>\n {{yield}}\n </div>\n</fieldset>", {
14
+ strictMode: true
15
+ }), this);
16
+ }
17
+ }
18
+
19
+ export { Fieldset as default };
20
+ //# sourceMappingURL=fieldset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldset.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  /* src/form/help-text.css */
2
2
  .help-text_e4685b9e4 {
3
3
  display: block;
4
- font-size: var(--font-size-sm);
4
+ font-size: var(--font-size-xs);
5
5
  color: var(--color-text-secondary);
6
6
  line-height: var(--line-height-normal);
7
7
  }
@@ -10,6 +10,7 @@ export { default as DateRangePicker } from './date-range-picker.js';
10
10
  export { default as DateRangePickerField } from './date-range-picker-field.js';
11
11
  export { default as ErrorMessage } from './error-message.js';
12
12
  export { default as Field } from './field.js';
13
+ export { default as Fieldset } from './fieldset.js';
13
14
  export { default as Form } from './form.js';
14
15
  export { default as HelpText } from './help-text.js';
15
16
  export { default as Input } from './input.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -121,6 +121,7 @@
121
121
  .input-suffix_ef268a5e9 {
122
122
  display: flex;
123
123
  align-items: center;
124
+ box-sizing: border-box;
124
125
  padding: 0 var(--spacing-3);
125
126
  background-color: var(--color-bg-surface-sunken);
126
127
  border: var(--border-width-1) solid var(--color-border-control);
@@ -3,7 +3,7 @@
3
3
  display: flex;
4
4
  align-items: baseline;
5
5
  gap: var(--spacing-1);
6
- font-weight: var(--font-weight-medium);
6
+ font-weight: var(--font-weight-regular);
7
7
  color: var(--color-text);
8
8
  line-height: var(--line-height-tight);
9
9
  }
@@ -57,3 +57,17 @@
57
57
  font-weight: var(--font-weight-regular);
58
58
  font-style: italic;
59
59
  }
60
+
61
+ /* Info tooltip trigger */
62
+ .label-info-trigger_e7fa6e7a3 {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ color: var(--color-text-secondary);
66
+ cursor: default;
67
+ position: relative;
68
+ top: 0.1em;
69
+ }
70
+
71
+ .label-info-trigger_e7fa6e7a3:hover {
72
+ color: var(--color-text);
73
+ }
@@ -1,5 +1,8 @@
1
1
  import "./label.css"
2
2
  import Component from '@glimmer/component';
3
+ import { Info } from 'lucide';
4
+ import Icon from '../media/icon.js';
5
+ import Tooltip from '../overlay/tooltip.js';
3
6
  import { precompileTemplate } from '@ember/template-compilation';
4
7
  import { setComponentTemplate } from '@ember/component';
5
8
 
@@ -14,7 +17,6 @@ class Label extends Component {
14
17
  isRequired,
15
18
  requiredIndicator
16
19
  } = this.args;
17
- // Show when required AND requiredIndicator is not explicitly false
18
20
  return isRequired === true && requiredIndicator !== false;
19
21
  }
20
22
  get requiredIndicatorText() {
@@ -31,7 +33,6 @@ class Label extends Component {
31
33
  isRequired,
32
34
  optionalIndicator
33
35
  } = this.args;
34
- // Show when NOT required AND optionalIndicator is truthy
35
36
  return isRequired !== true && !!optionalIndicator;
36
37
  }
37
38
  get optionalIndicatorText() {
@@ -44,8 +45,13 @@ class Label extends Component {
44
45
  return '(optional)';
45
46
  }
46
47
  static {
47
- setComponentTemplate(precompileTemplate("<label class=\"label_e7fa6e7a3\" for={{@for}} data-size={{this.size}} data-disabled={{if @isDisabled \"true\"}} data-visually-hidden={{if @isVisuallyHidden \"true\"}} data-test-form-label ...attributes>\n <span class=\"label-text\" data-test-label-text>{{yield}}</span>\n {{#if this.showRequiredIndicator}}\n <span class=\"label-required_e7fa6e7a3\" data-test-label-required aria-hidden=\"true\">{{this.requiredIndicatorText}}</span>\n {{/if}}\n {{#if this.showOptionalIndicator}}\n <span class=\"label-optional_e7fa6e7a3\" data-test-label-optional>{{this.optionalIndicatorText}}</span>\n {{/if}}\n {{#if @secondaryLabel}}\n <span class=\"label-secondary_e7fa6e7a3\" data-test-label-secondary>{{@secondaryLabel}}</span>\n {{/if}}\n</label>", {
48
- strictMode: true
48
+ setComponentTemplate(precompileTemplate("<label class=\"label_e7fa6e7a3\" for={{@for}} data-size={{this.size}} data-disabled={{if @isDisabled \"true\"}} data-visually-hidden={{if @isVisuallyHidden \"true\"}} data-test-form-label ...attributes>\n <span class=\"label-text\" data-test-label-text>{{yield}}</span>\n {{#if this.showRequiredIndicator}}\n <span class=\"label-required_e7fa6e7a3\" data-test-label-required aria-hidden=\"true\">{{this.requiredIndicatorText}}</span>\n {{/if}}\n {{#if this.showOptionalIndicator}}\n <span class=\"label-optional_e7fa6e7a3\" data-test-label-optional>{{this.optionalIndicatorText}}</span>\n {{/if}}\n {{#if @secondaryLabel}}\n <span class=\"label-secondary_e7fa6e7a3\" data-test-label-secondary>{{@secondaryLabel}}</span>\n {{/if}}\n {{#if (has-block \"info\")}}\n <Tooltip @side=\"top\" @showArrow={{false}} data-test-label-info>\n <:default>\n <span class=\"label-info-trigger_e7fa6e7a3\">\n <Icon @icon={{Info}} @size=\"xs\" @label=\"More information\" />\n </span>\n </:default>\n <:content>\n {{yield to=\"info\"}}\n </:content>\n </Tooltip>\n {{else if @info}}\n <Tooltip @content={{@info}} @side=\"top\" @showArrow={{false}} data-test-label-info>\n <span class=\"label-info-trigger_e7fa6e7a3\">\n <Icon @icon={{Info}} @size=\"xs\" @label=\"More information\" />\n </span>\n </Tooltip>\n {{/if}}\n</label>", {
49
+ strictMode: true,
50
+ scope: () => ({
51
+ Tooltip,
52
+ Icon,
53
+ Info
54
+ })
49
55
  }), this);
50
56
  }
51
57
  }
@@ -188,7 +188,7 @@ class MoneyField extends Component {
188
188
  n(this.prototype, "handleFocus", [action]);
189
189
  }
190
190
  static {
191
- setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} data-currency={{@currency}} data-test-money-field ...attributes as |ctrl|>\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <ctrl.Input @prefix={{if this.showPrefix this.currencySymbol}} @suffix={{if this.showSuffix this.currencySymbol}} @inputMode=\"decimal\" @placeholder={{this.placeholder}} @name={{@name}} @value={{this.displayValue}} data-money-field {{on \"input\" this.handleInput}} {{on \"blur\" this.handleBlur}} {{on \"focus\" this.handleFocus}} />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage @errors={{array @error}} />\n {{/if}}\n</Control>", {
191
+ setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} @labelInfo={{@labelInfo}} data-currency={{@currency}} data-test-money-field ...attributes as |ctrl|>\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <ctrl.Input @prefix={{if this.showPrefix this.currencySymbol}} @suffix={{if this.showSuffix this.currencySymbol}} @inputMode=\"decimal\" @placeholder={{this.placeholder}} @name={{@name}} @value={{this.displayValue}} data-money-field {{on \"input\" this.handleInput}} {{on \"blur\" this.handleBlur}} {{on \"focus\" this.handleFocus}} />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage @errors={{array @error}} />\n {{/if}}\n</Control>", {
192
192
  strictMode: true,
193
193
  scope: () => ({
194
194
  Control,
@@ -214,7 +214,7 @@
214
214
  padding: var(--spacing-2) var(--spacing-3);
215
215
  border-radius: var(--radius-sm);
216
216
  font-size: var(--font-size-13);
217
- line-height: var(--line-height-1-25);
217
+ line-height: var(--line-height-tight);
218
218
  color: var(--color-text);
219
219
  cursor: pointer;
220
220
  user-select: none;
@@ -3,6 +3,7 @@
3
3
  .number-field-input-wrapper_e9ff3bd72 {
4
4
  display: flex;
5
5
  align-items: stretch;
6
+ box-sizing: border-box;
6
7
  height: var(--input-height-md);
7
8
  border: var(--border-width-1) solid var(--color-border-control);
8
9
  border-radius: var(--radius-md);
@@ -167,7 +167,7 @@ class NumberField extends Component {
167
167
  }
168
168
  };
169
169
  static {
170
- setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} ...attributes as |ctrl|>\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <div class=\"number-field-input-wrapper_e9ff3bd72\" data-invalid={{if this.isInvalid \"true\" \"false\"}} data-disabled={{if @isDisabled \"true\" \"false\"}} data-readonly={{if @isReadOnly \"true\" \"false\"}} data-at-min={{if this.isAtMin \"true\" \"false\"}} data-at-max={{if this.isAtMax \"true\" \"false\"}} data-has-stepper={{if this.showStepper \"true\" \"false\"}} data-test-number-field-wrapper>\n {{#if @prefix}}\n <span class=\"number-field-affix_e9ff3bd72 number-field-prefix_e9ff3bd72\" data-test-number-field-prefix>\n {{@prefix}}\n </span>\n {{/if}}\n\n {{!-- template-lint-disable no-redundant-role --}}\n <input id={{ctrl.id}} class=\"number-field-input_e9ff3bd72\" type=\"text\" inputmode={{this.inputMode}} role=\"spinbutton\" name={{@name}} value={{this.displayValue}} placeholder={{@placeholder}} disabled={{@isDisabled}} readonly={{@isReadOnly}} aria-invalid={{if this.isInvalid \"true\"}} aria-required={{if @isRequired \"true\"}} aria-describedby={{this.getAriaDescribedBy ctrl.id}} aria-valuenow={{this.ariaValueNow}} aria-valuemin={{this.ariaValueMin}} aria-valuemax={{this.ariaValueMax}} {{on \"input\" this.handleInput}} {{on \"blur\" this.handleBlur}} {{on \"focus\" this.handleFocus}} {{on \"keydown\" this.handleKeyDown}} data-test-number-field-input />\n\n {{#if @suffix}}\n <span class=\"number-field-affix_e9ff3bd72 number-field-suffix_e9ff3bd72\" data-test-number-field-suffix>\n {{@suffix}}\n </span>\n {{/if}}\n\n {{#if this.showStepper}}\n <div class=\"number-field-stepper_e9ff3bd72\" data-test-number-field-stepper>\n <button type=\"button\" class=\"number-field-stepper-button_e9ff3bd72\" tabindex=\"-1\" aria-label=\"Increase\" disabled={{if @isDisabled true (if @isReadOnly true this.isAtMax)}} {{on \"click\" this.increment}} data-test-number-field-increment>\n <Icon @icon={{ChevronUp}} @size=\"xs\" />\n </button>\n <button type=\"button\" class=\"number-field-stepper-button_e9ff3bd72\" tabindex=\"-1\" aria-label=\"Decrease\" disabled={{if @isDisabled true (if @isReadOnly true this.isAtMin)}} {{on \"click\" this.decrement}} data-test-number-field-decrement>\n <Icon @icon={{ChevronDown}} @size=\"xs\" />\n </button>\n </div>\n {{/if}}\n </div>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
170
+ setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} @labelInfo={{@labelInfo}} data-max-width={{@maxWidth}} ...attributes as |ctrl|>\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <div class=\"number-field-input-wrapper_e9ff3bd72\" data-invalid={{if this.isInvalid \"true\" \"false\"}} data-disabled={{if @isDisabled \"true\" \"false\"}} data-readonly={{if @isReadOnly \"true\" \"false\"}} data-at-min={{if this.isAtMin \"true\" \"false\"}} data-at-max={{if this.isAtMax \"true\" \"false\"}} data-has-stepper={{if this.showStepper \"true\" \"false\"}} data-test-number-field-wrapper>\n {{#if @prefix}}\n <span class=\"number-field-affix_e9ff3bd72 number-field-prefix_e9ff3bd72\" data-test-number-field-prefix>\n {{@prefix}}\n </span>\n {{/if}}\n\n {{!-- template-lint-disable no-redundant-role --}}\n <input id={{ctrl.id}} class=\"number-field-input_e9ff3bd72\" type=\"text\" inputmode={{this.inputMode}} role=\"spinbutton\" name={{@name}} value={{this.displayValue}} placeholder={{@placeholder}} disabled={{@isDisabled}} readonly={{@isReadOnly}} aria-invalid={{if this.isInvalid \"true\"}} aria-required={{if @isRequired \"true\"}} aria-describedby={{this.getAriaDescribedBy ctrl.id}} aria-valuenow={{this.ariaValueNow}} aria-valuemin={{this.ariaValueMin}} aria-valuemax={{this.ariaValueMax}} {{on \"input\" this.handleInput}} {{on \"blur\" this.handleBlur}} {{on \"focus\" this.handleFocus}} {{on \"keydown\" this.handleKeyDown}} data-test-number-field-input />\n\n {{#if @suffix}}\n <span class=\"number-field-affix_e9ff3bd72 number-field-suffix_e9ff3bd72\" data-test-number-field-suffix>\n {{@suffix}}\n </span>\n {{/if}}\n\n {{#if this.showStepper}}\n <div class=\"number-field-stepper_e9ff3bd72\" data-test-number-field-stepper>\n <button type=\"button\" class=\"number-field-stepper-button_e9ff3bd72\" tabindex=\"-1\" aria-label=\"Increase\" disabled={{if @isDisabled true (if @isReadOnly true this.isAtMax)}} {{on \"click\" this.increment}} data-test-number-field-increment>\n <Icon @icon={{ChevronUp}} @size=\"xs\" />\n </button>\n <button type=\"button\" class=\"number-field-stepper-button_e9ff3bd72\" tabindex=\"-1\" aria-label=\"Decrease\" disabled={{if @isDisabled true (if @isReadOnly true this.isAtMin)}} {{on \"click\" this.decrement}} data-test-number-field-decrement>\n <Icon @icon={{ChevronDown}} @size=\"xs\" />\n </button>\n </div>\n {{/if}}\n </div>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
171
171
  strictMode: true,
172
172
  scope: () => ({
173
173
  Control,
@@ -132,17 +132,17 @@
132
132
  font-size: var(--font-size-md);
133
133
  font-weight: var(--font-weight-regular);
134
134
  color: var(--color-text);
135
- line-height: var(--spacing-5);
135
+ line-height: var(--line-height-20);
136
136
  }
137
137
 
138
138
  .radio-wrapper_e6dda4f5d[data-size="sm"] .radio-label_e6dda4f5d {
139
139
  font-size: var(--font-size-sm);
140
- line-height: var(--spacing-4);
140
+ line-height: var(--line-height-16);
141
141
  }
142
142
 
143
143
  .radio-wrapper_e6dda4f5d[data-size="lg"] .radio-label_e6dda4f5d {
144
144
  font-size: var(--font-size-lg);
145
- line-height: var(--spacing-6);
145
+ line-height: var(--line-height-24);
146
146
  }
147
147
 
148
148
  .radio-label_e6dda4f5d[data-visually-hidden="true"] {
@@ -24,7 +24,7 @@ class SelectField extends Component {
24
24
  return parts.length > 0 ? parts.join(' ') : undefined;
25
25
  };
26
26
  static {
27
- setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} ...attributes as |ctrl|>\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <Select @id={{ctrl.id}} @name={{@name}} @value={{@value}} @placeholder={{@placeholder}} @isDisabled={{@isDisabled}} @isInvalid={{this.isInvalid}} @isRequired={{@isRequired}} @aria-describedby={{this.getAriaDescribedBy ctrl.id}} @onChange={{@onChange}} @onBlur={{@onBlur}} @onFocus={{@onFocus}} data-test-select-field as |select|>\n {{yield (hash Option=select.Option OptionGroup=select.OptionGroup)}}\n </Select>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
27
+ setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @labelInfo={{@labelInfo}} ...attributes as |ctrl|>\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <Select @id={{ctrl.id}} @name={{@name}} @value={{@value}} @placeholder={{@placeholder}} @isDisabled={{@isDisabled}} @isInvalid={{this.isInvalid}} @isRequired={{@isRequired}} @aria-describedby={{this.getAriaDescribedBy ctrl.id}} @onChange={{@onChange}} @onBlur={{@onBlur}} @onFocus={{@onFocus}} data-test-select-field as |select|>\n {{yield (hash Option=select.Option OptionGroup=select.OptionGroup)}}\n </Select>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
28
28
  strictMode: true,
29
29
  scope: () => ({
30
30
  Control,
@@ -1 +1 @@
1
- {"version":3,"file":"select-field.js","sources":["../../src/form/select-field.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport Control from './control.gts';\nimport Select, { SelectOption, SelectOptionGroup } from './select.gts';\n\nimport './select.css';\n\nexport type LabelVisibility = 'visible' | 'hidden';\n\nexport interface SelectFieldSignature {\n Element: HTMLDivElement;\n Args: {\n /** Label text (required) */\n label: string;\n\n /** Current selected value */\n value?: string;\n\n /** Placeholder text shown when no value is selected */\n placeholder?: string;\n\n /** Help text displayed below the select */\n helpText?: string;\n\n /** Error message (also sets invalid state) */\n error?: string;\n\n /** Field is required */\n isRequired?: boolean;\n\n /** Field is disabled */\n isDisabled?: boolean;\n\n /** Label visibility */\n labelVisibility?: LabelVisibility;\n\n /** Input name for forms */\n name?: string;\n\n /** Change event handler */\n onChange?: (value: string) => void;\n\n /** Blur event handler */\n onBlur?: (event: FocusEvent) => void;\n\n /** Focus event handler */\n onFocus?: (event: FocusEvent) => void;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof SelectOption, 'ctx'>;\n OptionGroup: typeof SelectOptionGroup;\n },\n ];\n };\n}\n\nexport default class SelectField extends Component<SelectFieldSignature> {\n get isInvalid(): boolean {\n return !!this.args.error;\n }\n\n get isLabelHidden(): boolean {\n return this.args.labelVisibility === 'hidden';\n }\n\n /** Build aria-describedby from the control's help text and error message IDs */\n getAriaDescribedBy = (controlId: string): string | undefined => {\n const parts: string[] = [];\n if (this.args.helpText) {\n parts.push(`${controlId}-help-text`);\n }\n if (this.args.error) {\n parts.push(`${controlId}-error-message`);\n }\n return parts.length > 0 ? parts.join(' ') : undefined;\n };\n\n <template>\n <Control\n @isInvalid={{this.isInvalid}}\n @isDisabled={{@isDisabled}}\n @isRequired={{@isRequired}}\n ...attributes\n as |ctrl|\n >\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <Select\n @id={{ctrl.id}}\n @name={{@name}}\n @value={{@value}}\n @placeholder={{@placeholder}}\n @isDisabled={{@isDisabled}}\n @isInvalid={{this.isInvalid}}\n @isRequired={{@isRequired}}\n @aria-describedby={{this.getAriaDescribedBy ctrl.id}}\n @onChange={{@onChange}}\n @onBlur={{@onBlur}}\n @onFocus={{@onFocus}}\n data-test-select-field\n as |select|\n >\n {{yield (hash Option=select.Option OptionGroup=select.OptionGroup)}}\n </Select>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n </Control>\n </template>\n}\n"],"names":["SelectField","Component","isInvalid","args","error","isLabelHidden","labelVisibility","getAriaDescribedBy","controlId","parts","helpText","push","length","join","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","Control","Select","hash"],"mappings":";;;;;;;AA4De,MAAMA,oBAAoBC,SAAA,CAAU;EACjD,IAAIC,SAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK;AAC1B,EAAA;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACF,IAAI,CAACG,eAAe,KAAK,QAAA;AACvC,EAAA;AAEA;EACAC,qBAAsBC,SAAiB,IAAqB;IAC1D,MAAMC,KAAa,GAAK,EAAE;AAC1B,IAAA,IAAI,IAAI,CAACN,IAAI,CAACO,QAAQ,EAAE;AACtBD,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,YAAqB,CAAA;AACrC,IAAA;AACA,IAAA,IAAI,IAAI,CAACL,IAAI,CAACC,KAAK,EAAE;AACnBK,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,gBAAyB,CAAA;AACzC,IAAA;AACA,IAAA,OAAOC,MAAMG,MAAM,GAAG,IAAIH,KAAA,CAAMI,IAAI,CAAC,GAAA,CAAA,GAAOC,SAAA;EAC9C,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,+yBAAA,EAsCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,MAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"select-field.js","sources":["../../src/form/select-field.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport Control from './control.gts';\nimport Select, { SelectOption, SelectOptionGroup } from './select.gts';\n\nexport type LabelVisibility = 'visible' | 'hidden';\n\nexport interface SelectFieldSignature {\n Element: HTMLDivElement;\n Args: {\n /** Label text (required) */\n label: string;\n\n /** Current selected value */\n value?: string;\n\n /** Placeholder text shown when no value is selected */\n placeholder?: string;\n\n /** Help text displayed below the select */\n helpText?: string;\n\n /** Error message (also sets invalid state) */\n error?: string;\n\n /** Field is required */\n isRequired?: boolean;\n\n /** Field is disabled */\n isDisabled?: boolean;\n\n /** Info tooltip text shown next to the label */\n labelInfo?: string;\n\n /** Label visibility */\n labelVisibility?: LabelVisibility;\n\n /** Input name for forms */\n name?: string;\n\n /** Change event handler */\n onChange?: (value: string) => void;\n\n /** Blur event handler */\n onBlur?: (event: FocusEvent) => void;\n\n /** Focus event handler */\n onFocus?: (event: FocusEvent) => void;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof SelectOption, 'ctx'>;\n OptionGroup: typeof SelectOptionGroup;\n },\n ];\n /** Rich tooltip content shown next to the label */\n info: [];\n };\n}\n\nexport default class SelectField extends Component<SelectFieldSignature> {\n get isInvalid(): boolean {\n return !!this.args.error;\n }\n\n get isLabelHidden(): boolean {\n return this.args.labelVisibility === 'hidden';\n }\n\n /** Build aria-describedby from the control's help text and error message IDs */\n getAriaDescribedBy = (controlId: string): string | undefined => {\n const parts: string[] = [];\n if (this.args.helpText) {\n parts.push(`${controlId}-help-text`);\n }\n if (this.args.error) {\n parts.push(`${controlId}-error-message`);\n }\n return parts.length > 0 ? parts.join(' ') : undefined;\n };\n\n <template>\n <Control\n @isInvalid={{this.isInvalid}}\n @isDisabled={{@isDisabled}}\n @isRequired={{@isRequired}}\n @labelInfo={{@labelInfo}}\n ...attributes\n as |ctrl|\n >\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <Select\n @id={{ctrl.id}}\n @name={{@name}}\n @value={{@value}}\n @placeholder={{@placeholder}}\n @isDisabled={{@isDisabled}}\n @isInvalid={{this.isInvalid}}\n @isRequired={{@isRequired}}\n @aria-describedby={{this.getAriaDescribedBy ctrl.id}}\n @onChange={{@onChange}}\n @onBlur={{@onBlur}}\n @onFocus={{@onFocus}}\n data-test-select-field\n as |select|\n >\n {{yield (hash Option=select.Option OptionGroup=select.OptionGroup)}}\n </Select>\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n </Control>\n </template>\n}\n"],"names":["SelectField","Component","isInvalid","args","error","isLabelHidden","labelVisibility","getAriaDescribedBy","controlId","parts","helpText","push","length","join","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","Control","Select","hash"],"mappings":";;;;;;;AA+De,MAAMA,oBAAoBC,SAAA,CAAU;EACjD,IAAIC,SAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK;AAC1B,EAAA;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACF,IAAI,CAACG,eAAe,KAAK,QAAA;AACvC,EAAA;AAEA;EACAC,qBAAsBC,SAAiB,IAAqB;IAC1D,MAAMC,KAAa,GAAK,EAAE;AAC1B,IAAA,IAAI,IAAI,CAACN,IAAI,CAACO,QAAQ,EAAE;AACtBD,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,YAAqB,CAAA;AACrC,IAAA;AACA,IAAA,IAAI,IAAI,CAACL,IAAI,CAACC,KAAK,EAAE;AACnBK,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,gBAAyB,CAAA;AACzC,IAAA;AACA,IAAA,OAAOC,MAAMG,MAAM,GAAG,IAAIH,KAAA,CAAMI,IAAI,CAAC,GAAA,CAAA,GAAOC,SAAA;EAC9C,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,uiCAAA,EA8CA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,MAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -127,7 +127,7 @@
127
127
  padding: var(--spacing-2) var(--spacing-3);
128
128
  border-radius: var(--radius-sm);
129
129
  font-size: var(--font-size-13);
130
- line-height: var(--line-height-1-25);
130
+ line-height: var(--line-height-tight);
131
131
  color: var(--color-text);
132
132
  cursor: pointer;
133
133
  user-select: none;
@@ -1,4 +1,4 @@
1
- /* <inline>/src/form/text-field-css-f60360f3f8aaf4da664eaccd1bcc9f8f.css */
1
+ /* <inline>/src/form/text-field-css-754feeb82dbd9fc9afdc1f00dceb13ad.css */
2
2
 
3
3
  .text-field_e2680f9ba {
4
4
  display: flex;
@@ -29,3 +29,24 @@
29
29
  .text-field_e2680f9ba[data-over-limit="true"] .text-field-character-count_e2680f9ba {
30
30
  color: var(--color-text-critical);
31
31
  }
32
+
33
+ .text-field_e2680f9ba[data-monospace="true"] input,
34
+ .text-field_e2680f9ba[data-monospace="true"] textarea {
35
+ font-family: var(--font-family-mono);
36
+ }
37
+
38
+ .text-field_e2680f9ba[data-max-width="xs"] {
39
+ max-width: 120px;
40
+ }
41
+ .text-field_e2680f9ba[data-max-width="sm"] {
42
+ max-width: 200px;
43
+ }
44
+ .text-field_e2680f9ba[data-max-width="md"] {
45
+ max-width: 320px;
46
+ }
47
+ .text-field_e2680f9ba[data-max-width="lg"] {
48
+ max-width: 480px;
49
+ }
50
+ .text-field_e2680f9ba[data-max-width="xl"] {
51
+ max-width: 640px;
52
+ }
@@ -1,4 +1,4 @@
1
- import "./text-field-css-f60360f3f8aaf4da664eaccd1bcc9f8f.css"
1
+ import "./text-field-css-754feeb82dbd9fc9afdc1f00dceb13ad.css"
2
2
  import Component from '@glimmer/component';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { action } from '@ember/object';
@@ -123,7 +123,7 @@ class TextField extends Component {
123
123
  n(this.prototype, "handleBlur", [action]);
124
124
  }
125
125
  static {
126
- setComponentTemplate(precompileTemplate("\n\n<div class=\"text-field_e2680f9ba\" data-invalid={{if this.isInvalid \"true\" \"false\"}} data-disabled={{if this.isDisabled \"true\" \"false\"}} data-readonly={{if this.isReadOnly \"true\" \"false\"}} data-over-limit={{if this.isOverLimit \"true\" \"false\"}} data-test-text-field ...attributes>\n <Label @for={{this.id}} @isRequired={{this.isRequired}} @isDisabled={{this.isDisabled}} @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </Label>\n\n {{#if @multiline}}\n <FormTextarea id={{this.id}} @size={{@size}} @variant={{@variant}} @value={{this.currentValue}} @placeholder={{@placeholder}} @isDisabled={{this.isDisabled}} @isReadOnly={{this.isReadOnly}} @isRequired={{this.isRequired}} @isInvalid={{this.isInvalid}} @rows={{this.rows}} @autoGrow={{@autoResize}} @maxLength={{@maxLength}} @name={{@name}} @onInput={{this.handleTextareaInput}} @onChange={{this.handleTextareaChange}} @onFocus={{this.handleFocus}} @onBlur={{this.handleBlur}} aria-describedby={{if this.ariaDescribedBy this.ariaDescribedBy}} />\n {{else}}\n <FormInput id={{this.id}} @type={{@type}} @size={{@size}} @variant={{@variant}} @value={{this.currentValue}} @placeholder={{@placeholder}} @isDisabled={{this.isDisabled}} @isReadOnly={{this.isReadOnly}} @isRequired={{this.isRequired}} @isInvalid={{this.isInvalid}} @maxLength={{@maxLength}} @autoComplete={{@autoComplete}} @name={{@name}} aria-describedby={{if this.ariaDescribedBy this.ariaDescribedBy}} {{on \"input\" this.handleInputEvent}} {{on \"change\" this.handleChangeEvent}} {{on \"focus\" this.handleFocus}} {{on \"blur\" this.handleBlur}}>\n <:prefix>{{yield to=\"prefix\"}}{{@prefix}}</:prefix>\n <:suffix>{{yield to=\"suffix\"}}{{@suffix}}</:suffix>\n </FormInput>\n {{/if}}\n\n {{#if this.showFooter}}\n <div class=\"text-field-footer_e2680f9ba\" data-test-text-field-footer>\n {{#if @error}}\n <ErrorMessage id={{this.errorMessageId}} @isInvalid={{this.isInvalid}}>\n {{@error}}\n </ErrorMessage>\n {{else if @helpText}}\n <HelpText id={{this.helpTextId}}>\n {{@helpText}}\n </HelpText>\n {{/if}}\n\n {{#if @showCharacterCount}}\n <span class=\"text-field-character-count_e2680f9ba\" aria-live=\"polite\" data-test-character-count>\n {{this.characterCount}}{{#if @maxLength}}/{{@maxLength}}{{/if}}\n </span>\n {{/if}}\n </div>\n {{/if}}\n</div>", {
126
+ setComponentTemplate(precompileTemplate("\n\n<div class=\"text-field_e2680f9ba\" data-invalid={{if this.isInvalid \"true\" \"false\"}} data-disabled={{if this.isDisabled \"true\" \"false\"}} data-readonly={{if this.isReadOnly \"true\" \"false\"}} data-over-limit={{if this.isOverLimit \"true\" \"false\"}} data-monospace={{if @monospace \"true\" \"false\"}} data-max-width={{@maxWidth}} data-test-text-field ...attributes>\n {{#if (has-block \"info\")}}\n <Label @for={{this.id}} @isRequired={{this.isRequired}} @isDisabled={{this.isDisabled}} @isVisuallyHidden={{this.isLabelHidden}} @info={{@labelInfo}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </Label>\n {{else}}\n <Label @for={{this.id}} @isRequired={{this.isRequired}} @isDisabled={{this.isDisabled}} @isVisuallyHidden={{this.isLabelHidden}} @info={{@labelInfo}}>\n {{@label}}\n </Label>\n {{/if}}\n\n {{#if @multiline}}\n <FormTextarea id={{this.id}} @size={{@size}} @variant={{@variant}} @value={{this.currentValue}} @placeholder={{@placeholder}} @isDisabled={{this.isDisabled}} @isReadOnly={{this.isReadOnly}} @isRequired={{this.isRequired}} @isInvalid={{this.isInvalid}} @rows={{this.rows}} @autoGrow={{@autoResize}} @maxLength={{@maxLength}} @name={{@name}} @onInput={{this.handleTextareaInput}} @onChange={{this.handleTextareaChange}} @onFocus={{this.handleFocus}} @onBlur={{this.handleBlur}} aria-describedby={{if this.ariaDescribedBy this.ariaDescribedBy}} />\n {{else}}\n <FormInput id={{this.id}} @type={{@type}} @size={{@size}} @variant={{@variant}} @value={{this.currentValue}} @placeholder={{@placeholder}} @isDisabled={{this.isDisabled}} @isReadOnly={{this.isReadOnly}} @isRequired={{this.isRequired}} @isInvalid={{this.isInvalid}} @maxLength={{@maxLength}} @autoComplete={{@autoComplete}} @name={{@name}} aria-describedby={{if this.ariaDescribedBy this.ariaDescribedBy}} {{on \"input\" this.handleInputEvent}} {{on \"change\" this.handleChangeEvent}} {{on \"focus\" this.handleFocus}} {{on \"blur\" this.handleBlur}}>\n <:prefix>{{yield to=\"prefix\"}}{{@prefix}}</:prefix>\n <:suffix>{{yield to=\"suffix\"}}{{@suffix}}</:suffix>\n </FormInput>\n {{/if}}\n\n {{#if this.showFooter}}\n <div class=\"text-field-footer_e2680f9ba\" data-test-text-field-footer>\n {{#if @error}}\n <ErrorMessage id={{this.errorMessageId}} @isInvalid={{this.isInvalid}}>\n {{@error}}\n </ErrorMessage>\n {{else if @helpText}}\n <HelpText id={{this.helpTextId}}>\n {{@helpText}}\n </HelpText>\n {{/if}}\n\n {{#if @showCharacterCount}}\n <span class=\"text-field-character-count_e2680f9ba\" aria-live=\"polite\" data-test-character-count>\n {{this.characterCount}}{{#if @maxLength}}/{{@maxLength}}{{/if}}\n </span>\n {{/if}}\n </div>\n {{/if}}\n</div>", {
127
127
  strictMode: true,
128
128
  scope: () => ({
129
129
  Label,
@@ -13,6 +13,7 @@
13
13
 
14
14
  /* Textarea element */
15
15
  .textarea_eb3566bbf {
16
+ box-sizing: border-box;
16
17
  width: 100%;
17
18
  padding: var(--spacing-2);
18
19
  border: var(--border-width-1) solid var(--color-border-control);
@@ -21,7 +22,7 @@
21
22
  color: var(--color-text);
22
23
  font-family: inherit;
23
24
  font-size: var(--font-size-13);
24
- line-height: var(--line-height-1-25);
25
+ line-height: var(--line-height-tight);
25
26
  transition:
26
27
  border-color var(--transition-fast),
27
28
  box-shadow var(--transition-fast);
@@ -23,7 +23,7 @@ class TimePickerField extends Component {
23
23
  return parts.length > 0 ? parts.join(' ') : undefined;
24
24
  };
25
25
  static {
26
- setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} ...attributes as |ctrl|>\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <TimePicker @id={{ctrl.id}} @name={{@name}} @value={{@value}} @placeholder={{@placeholder}} @format={{@format}} @interval={{@interval}} @minTime={{@minTime}} @maxTime={{@maxTime}} @showNow={{@showNow}} @allowTextInput={{@allowTextInput}} @closeOnSelect={{@closeOnSelect}} @showIcon={{@showIcon}} @hideDisabledOptions={{@hideDisabledOptions}} @snapToInterval={{@snapToInterval}} @isDisabled={{@isDisabled}} @isInvalid={{this.isInvalid}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} @aria-describedby={{this.getAriaDescribedBy ctrl.id}} @onChange={{@onChange}} @onBlur={{@onBlur}} @onFocus={{@onFocus}} data-test-time-picker-field />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
26
+ setComponentTemplate(precompileTemplate("<Control @isInvalid={{this.isInvalid}} @isDisabled={{@isDisabled}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} @labelInfo={{@labelInfo}} ...attributes as |ctrl|>\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <TimePicker @id={{ctrl.id}} @name={{@name}} @value={{@value}} @placeholder={{@placeholder}} @format={{@format}} @interval={{@interval}} @minTime={{@minTime}} @maxTime={{@maxTime}} @showNow={{@showNow}} @allowTextInput={{@allowTextInput}} @closeOnSelect={{@closeOnSelect}} @showIcon={{@showIcon}} @hideDisabledOptions={{@hideDisabledOptions}} @snapToInterval={{@snapToInterval}} @isDisabled={{@isDisabled}} @isInvalid={{this.isInvalid}} @isRequired={{@isRequired}} @isReadOnly={{@isReadOnly}} @aria-describedby={{this.getAriaDescribedBy ctrl.id}} @onChange={{@onChange}} @onBlur={{@onBlur}} @onFocus={{@onFocus}} data-test-time-picker-field />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n</Control>", {
27
27
  strictMode: true,
28
28
  scope: () => ({
29
29
  Control,
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker-field.js","sources":["../../src/form/time-picker-field.gts"],"sourcesContent":["import Component from '@glimmer/component';\n\nimport Control from './control.gts';\nimport TimePicker, { type TimeFormat } from './time-picker.gts';\n\nexport type LabelVisibility = 'visible' | 'hidden';\n\nexport interface TimePickerFieldSignature {\n Element: HTMLDivElement;\n Args: {\n /** Label text (required) */\n label: string;\n\n /** Current selected time value (HH:mm format) */\n value?: string | null;\n\n /** Placeholder text shown when no value is selected */\n placeholder?: string;\n\n /** Time format (12h or 24h) */\n format?: TimeFormat;\n\n /** Minutes between options (default: 15) */\n interval?: number;\n\n /** Minimum allowed time (HH:mm format) */\n minTime?: string;\n\n /** Maximum allowed time (HH:mm format) */\n maxTime?: string;\n\n /** Show \"Now\" option at the top */\n showNow?: boolean;\n\n /** Allow typing in the input */\n allowTextInput?: boolean;\n\n /** Close dropdown when a time is selected */\n closeOnSelect?: boolean;\n\n /** Show clock icon */\n showIcon?: boolean;\n\n /** Hide disabled options from the dropdown */\n hideDisabledOptions?: boolean;\n\n /** Round typed values to the nearest interval on blur */\n snapToInterval?: boolean;\n\n /** Help text displayed below the input */\n helpText?: string;\n\n /** Error message (also sets invalid state) */\n error?: string;\n\n /** Field is required */\n isRequired?: boolean;\n\n /** Field is disabled */\n isDisabled?: boolean;\n\n /** Field is read-only */\n isReadOnly?: boolean;\n\n /** Label visibility */\n labelVisibility?: LabelVisibility;\n\n /** Input name for forms */\n name?: string;\n\n /** Change event handler */\n onChange?: (value: string | null) => void;\n\n /** Blur event handler */\n onBlur?: (event: FocusEvent) => void;\n\n /** Focus event handler */\n onFocus?: (event: FocusEvent) => void;\n };\n}\n\nexport default class TimePickerField extends Component<TimePickerFieldSignature> {\n get isInvalid(): boolean {\n return !!this.args.error;\n }\n\n get isLabelHidden(): boolean {\n return this.args.labelVisibility === 'hidden';\n }\n\n /** Build aria-describedby from the control's help text and error message IDs */\n getAriaDescribedBy = (controlId: string): string | undefined => {\n const parts: string[] = [];\n if (this.args.helpText) {\n parts.push(`${controlId}-help-text`);\n }\n if (this.args.error) {\n parts.push(`${controlId}-error-message`);\n }\n return parts.length > 0 ? parts.join(' ') : undefined;\n };\n\n <template>\n <Control\n @isInvalid={{this.isInvalid}}\n @isDisabled={{@isDisabled}}\n @isRequired={{@isRequired}}\n @isReadOnly={{@isReadOnly}}\n ...attributes\n as |ctrl|\n >\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n\n <TimePicker\n @id={{ctrl.id}}\n @name={{@name}}\n @value={{@value}}\n @placeholder={{@placeholder}}\n @format={{@format}}\n @interval={{@interval}}\n @minTime={{@minTime}}\n @maxTime={{@maxTime}}\n @showNow={{@showNow}}\n @allowTextInput={{@allowTextInput}}\n @closeOnSelect={{@closeOnSelect}}\n @showIcon={{@showIcon}}\n @hideDisabledOptions={{@hideDisabledOptions}}\n @snapToInterval={{@snapToInterval}}\n @isDisabled={{@isDisabled}}\n @isInvalid={{this.isInvalid}}\n @isRequired={{@isRequired}}\n @isReadOnly={{@isReadOnly}}\n @aria-describedby={{this.getAriaDescribedBy ctrl.id}}\n @onChange={{@onChange}}\n @onBlur={{@onBlur}}\n @onFocus={{@onFocus}}\n data-test-time-picker-field\n />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n </Control>\n </template>\n}\n"],"names":["TimePickerField","Component","isInvalid","args","error","isLabelHidden","labelVisibility","getAriaDescribedBy","controlId","parts","helpText","push","length","join","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","Control","TimePicker"],"mappings":";;;;;;AAiFe,MAAMA,wBAAwBC,SAAA,CAAU;EACrD,IAAIC,SAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK;AAC1B,EAAA;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACF,IAAI,CAACG,eAAe,KAAK,QAAA;AACvC,EAAA;AAEA;EACAC,qBAAsBC,SAAiB,IAAqB;IAC1D,MAAMC,KAAa,GAAK,EAAE;AAC1B,IAAA,IAAI,IAAI,CAACN,IAAI,CAACO,QAAQ,EAAE;AACtBD,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,YAAqB,CAAA;AACrC,IAAA;AACA,IAAA,IAAI,IAAI,CAACL,IAAI,CAACC,KAAK,EAAE;AACnBK,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,gBAAyB,CAAA;AACzC,IAAA;AACA,IAAA,OAAOC,MAAMG,MAAM,GAAG,IAAIH,KAAA,CAAMI,IAAI,CAAC,GAAA,CAAA,GAAOC,SAAA;EAC9C,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,6iCAAA,EA+CA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"time-picker-field.js","sources":["../../src/form/time-picker-field.gts"],"sourcesContent":["import Component from '@glimmer/component';\n\nimport Control from './control.gts';\nimport TimePicker, { type TimeFormat } from './time-picker.gts';\n\nexport type LabelVisibility = 'visible' | 'hidden';\n\nexport interface TimePickerFieldSignature {\n Element: HTMLDivElement;\n Args: {\n /** Label text (required) */\n label: string;\n\n /** Current selected time value (HH:mm format) */\n value?: string | null;\n\n /** Placeholder text shown when no value is selected */\n placeholder?: string;\n\n /** Time format (12h or 24h) */\n format?: TimeFormat;\n\n /** Minutes between options (default: 15) */\n interval?: number;\n\n /** Minimum allowed time (HH:mm format) */\n minTime?: string;\n\n /** Maximum allowed time (HH:mm format) */\n maxTime?: string;\n\n /** Show \"Now\" option at the top */\n showNow?: boolean;\n\n /** Allow typing in the input */\n allowTextInput?: boolean;\n\n /** Close dropdown when a time is selected */\n closeOnSelect?: boolean;\n\n /** Show clock icon */\n showIcon?: boolean;\n\n /** Hide disabled options from the dropdown */\n hideDisabledOptions?: boolean;\n\n /** Round typed values to the nearest interval on blur */\n snapToInterval?: boolean;\n\n /** Help text displayed below the input */\n helpText?: string;\n\n /** Error message (also sets invalid state) */\n error?: string;\n\n /** Field is required */\n isRequired?: boolean;\n\n /** Field is disabled */\n isDisabled?: boolean;\n\n /** Field is read-only */\n isReadOnly?: boolean;\n\n /** Info tooltip text shown next to the label */\n labelInfo?: string;\n\n /** Label visibility */\n labelVisibility?: LabelVisibility;\n\n /** Input name for forms */\n name?: string;\n\n /** Change event handler */\n onChange?: (value: string | null) => void;\n\n /** Blur event handler */\n onBlur?: (event: FocusEvent) => void;\n\n /** Focus event handler */\n onFocus?: (event: FocusEvent) => void;\n };\n Blocks: {\n /** Rich tooltip content shown next to the label */\n info: [];\n };\n}\n\nexport default class TimePickerField extends Component<TimePickerFieldSignature> {\n get isInvalid(): boolean {\n return !!this.args.error;\n }\n\n get isLabelHidden(): boolean {\n return this.args.labelVisibility === 'hidden';\n }\n\n /** Build aria-describedby from the control's help text and error message IDs */\n getAriaDescribedBy = (controlId: string): string | undefined => {\n const parts: string[] = [];\n if (this.args.helpText) {\n parts.push(`${controlId}-help-text`);\n }\n if (this.args.error) {\n parts.push(`${controlId}-error-message`);\n }\n return parts.length > 0 ? parts.join(' ') : undefined;\n };\n\n <template>\n <Control\n @isInvalid={{this.isInvalid}}\n @isDisabled={{@isDisabled}}\n @isRequired={{@isRequired}}\n @isReadOnly={{@isReadOnly}}\n @labelInfo={{@labelInfo}}\n ...attributes\n as |ctrl|\n >\n {{#if (has-block \"info\")}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n <:default>{{@label}}</:default>\n <:info>{{yield to=\"info\"}}</:info>\n </ctrl.Label>\n {{else}}\n <ctrl.Label @isVisuallyHidden={{this.isLabelHidden}}>\n {{@label}}\n </ctrl.Label>\n {{/if}}\n\n <TimePicker\n @id={{ctrl.id}}\n @name={{@name}}\n @value={{@value}}\n @placeholder={{@placeholder}}\n @format={{@format}}\n @interval={{@interval}}\n @minTime={{@minTime}}\n @maxTime={{@maxTime}}\n @showNow={{@showNow}}\n @allowTextInput={{@allowTextInput}}\n @closeOnSelect={{@closeOnSelect}}\n @showIcon={{@showIcon}}\n @hideDisabledOptions={{@hideDisabledOptions}}\n @snapToInterval={{@snapToInterval}}\n @isDisabled={{@isDisabled}}\n @isInvalid={{this.isInvalid}}\n @isRequired={{@isRequired}}\n @isReadOnly={{@isReadOnly}}\n @aria-describedby={{this.getAriaDescribedBy ctrl.id}}\n @onChange={{@onChange}}\n @onBlur={{@onBlur}}\n @onFocus={{@onFocus}}\n data-test-time-picker-field\n />\n\n {{#if @helpText}}\n <ctrl.HelpText>{{@helpText}}</ctrl.HelpText>\n {{/if}}\n\n {{#if @error}}\n <ctrl.ErrorMessage>{{@error}}</ctrl.ErrorMessage>\n {{/if}}\n </Control>\n </template>\n}\n"],"names":["TimePickerField","Component","isInvalid","args","error","isLabelHidden","labelVisibility","getAriaDescribedBy","controlId","parts","helpText","push","length","join","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","Control","TimePicker"],"mappings":";;;;;;AAwFe,MAAMA,wBAAwBC,SAAA,CAAU;EACrD,IAAIC,SAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK;AAC1B,EAAA;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACF,IAAI,CAACG,eAAe,KAAK,QAAA;AACvC,EAAA;AAEA;EACAC,qBAAsBC,SAAiB,IAAqB;IAC1D,MAAMC,KAAa,GAAK,EAAE;AAC1B,IAAA,IAAI,IAAI,CAACN,IAAI,CAACO,QAAQ,EAAE;AACtBD,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,YAAqB,CAAA;AACrC,IAAA;AACA,IAAA,IAAI,IAAI,CAACL,IAAI,CAACC,KAAK,EAAE;AACnBK,MAAAA,KAAA,CAAME,IAAI,CAAC,CAAA,EAAGH,SAAA,gBAAyB,CAAA;AACzC,IAAA;AACA,IAAA,OAAOC,MAAMG,MAAM,GAAG,IAAIH,KAAA,CAAMI,IAAI,CAAC,GAAA,CAAA,GAAOC,SAAA;EAC9C,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,qyCAAA,EAuDA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -118,6 +118,31 @@
118
118
  background-color: var(--color-bg-fill-accent-hover);
119
119
  }
120
120
 
121
+ /* Sentiment variants - checked state */
122
+ .wrapper_eb612ecfd[data-sentiment="success"] .track_eb612ecfd.checked_eb612ecfd {
123
+ background-color: var(--color-bg-fill-success);
124
+ }
125
+
126
+ .wrapper_eb612ecfd[data-sentiment="success"] .label-wrapper_eb612ecfd:hover .track_eb612ecfd.checked_eb612ecfd {
127
+ background-color: var(--color-bg-fill-success-hover);
128
+ }
129
+
130
+ .wrapper_eb612ecfd[data-sentiment="warning"] .track_eb612ecfd.checked_eb612ecfd {
131
+ background-color: var(--color-bg-fill-warning);
132
+ }
133
+
134
+ .wrapper_eb612ecfd[data-sentiment="warning"] .label-wrapper_eb612ecfd:hover .track_eb612ecfd.checked_eb612ecfd {
135
+ background-color: var(--color-bg-fill-warning-hover);
136
+ }
137
+
138
+ .wrapper_eb612ecfd[data-sentiment="critical"] .track_eb612ecfd.checked_eb612ecfd {
139
+ background-color: var(--color-bg-fill-critical);
140
+ }
141
+
142
+ .wrapper_eb612ecfd[data-sentiment="critical"] .label-wrapper_eb612ecfd:hover .track_eb612ecfd.checked_eb612ecfd {
143
+ background-color: var(--color-bg-fill-critical-hover);
144
+ }
145
+
121
146
  /* Checked state - thumb position */
122
147
  .wrapper_eb612ecfd[data-size="sm"] .track_eb612ecfd.checked_eb612ecfd .thumb_eb612ecfd {
123
148
  transform: translateX(14px);
@@ -161,8 +186,9 @@
161
186
 
162
187
  /* Label */
163
188
  .label_eb612ecfd {
164
- font-size: var(--font-size-md);
165
189
  color: var(--color-text);
190
+ font-weight: var(--font-weight-regular);
191
+ font-size: var(--font-size-md);
166
192
  line-height: var(--line-height-normal);
167
193
  }
168
194
 
@@ -39,6 +39,9 @@ class Toggle extends Component {
39
39
  get labelPosition() {
40
40
  return this.args.labelPosition ?? 'start';
41
41
  }
42
+ get sentiment() {
43
+ return this.args.sentiment ?? 'default';
44
+ }
42
45
  get value() {
43
46
  return this.args.value ?? 'on';
44
47
  }
@@ -89,7 +92,7 @@ class Toggle extends Component {
89
92
  n(this.prototype, "handleBlur", [action]);
90
93
  }
91
94
  static {
92
- setComponentTemplate(precompileTemplate("<div class=\"wrapper_eb612ecfd\" data-size={{this.size}} data-label-position={{this.labelPosition}} data-disabled={{if @isDisabled \"true\"}} data-test-toggle-wrapper ...attributes>\n <label class=\"label-wrapper_eb612ecfd\">\n {{#if this.hasLabel}}\n {{#if (eq this.labelPosition \"start\")}}\n <span class=\"label_eb612ecfd\" data-test-toggle-label>\n {{@label}}\n {{#if @isRequired}}\n <span class=\"required_eb612ecfd\">*</span>\n {{/if}}\n </span>\n {{/if}}\n {{/if}}\n\n <input id={{this.inputId}} type=\"checkbox\" role=\"switch\" class=\"input_eb612ecfd\" name={{@name}} value={{this.value}} checked={{this.checked}} disabled={{@isDisabled}} required={{@isRequired}} aria-checked={{if this.checked \"true\" \"false\"}} aria-describedby={{this.ariaDescribedBy}} {{on \"change\" this.handleChange}} {{on \"focus\" this.handleFocus}} {{on \"blur\" this.handleBlur}} data-test-toggle />\n\n <span class=\"track_eb612ecfd\n {{if this.checked \"checked_eb612ecfd\"}}\n {{if this.isFocused \"focused_eb612ecfd\"}}\" data-focused={{if this.isFocused \"true\"}} data-test-toggle-track>\n <span class=\"thumb_eb612ecfd\" data-test-toggle-thumb></span>\n </span>\n\n {{#if this.hasLabel}}\n {{#if (eq this.labelPosition \"end\")}}\n <span class=\"label_eb612ecfd\" data-test-toggle-label>\n {{@label}}\n {{#if @isRequired}}\n <span class=\"required_eb612ecfd\">*</span>\n {{/if}}\n </span>\n {{/if}}\n {{/if}}\n </label>\n\n {{#if this.hasDescription}}\n <p id={{this.descriptionId}} class=\"description_eb612ecfd\" data-test-toggle-description>\n {{@description}}\n </p>\n {{/if}}\n</div>", {
95
+ setComponentTemplate(precompileTemplate("<div class=\"wrapper_eb612ecfd\" data-size={{this.size}} data-sentiment={{this.sentiment}} data-label-position={{this.labelPosition}} data-disabled={{if @isDisabled \"true\"}} data-test-toggle-wrapper ...attributes>\n <label class=\"label-wrapper_eb612ecfd\">\n {{#if this.hasLabel}}\n {{#if (eq this.labelPosition \"start\")}}\n <span class=\"label_eb612ecfd\" data-test-toggle-label>\n {{@label}}\n {{#if @isRequired}}\n <span class=\"required_eb612ecfd\">*</span>\n {{/if}}\n </span>\n {{/if}}\n {{/if}}\n\n <input id={{this.inputId}} type=\"checkbox\" role=\"switch\" class=\"input_eb612ecfd\" name={{@name}} value={{this.value}} checked={{this.checked}} disabled={{@isDisabled}} required={{@isRequired}} aria-checked={{if this.checked \"true\" \"false\"}} aria-describedby={{this.ariaDescribedBy}} {{on \"change\" this.handleChange}} {{on \"focus\" this.handleFocus}} {{on \"blur\" this.handleBlur}} data-test-toggle />\n\n <span class=\"track_eb612ecfd\n {{if this.checked \"checked_eb612ecfd\"}}\n {{if this.isFocused \"focused_eb612ecfd\"}}\" data-focused={{if this.isFocused \"true\"}} data-test-toggle-track>\n <span class=\"thumb_eb612ecfd\" data-test-toggle-thumb></span>\n </span>\n\n {{#if this.hasLabel}}\n {{#if (eq this.labelPosition \"end\")}}\n <span class=\"label_eb612ecfd\" data-test-toggle-label>\n {{@label}}\n {{#if @isRequired}}\n <span class=\"required_eb612ecfd\">*</span>\n {{/if}}\n </span>\n {{/if}}\n {{/if}}\n </label>\n\n {{#if this.hasDescription}}\n <p id={{this.descriptionId}} class=\"description_eb612ecfd\" data-test-toggle-description>\n {{@description}}\n </p>\n {{/if}}\n</div>", {
93
96
  strictMode: true,
94
97
  scope: () => ({
95
98
  eq,
@@ -1,4 +1,4 @@
1
- /* <inline>/src/layout/divider-css-1ba104b9c606cbd1f542b45640fb5f2b.css */
1
+ /* <inline>/src/layout/divider-css-7e0cc7d350e31172582851c6cb2cf586.css */
2
2
 
3
3
  .divider_e11f7c205 {
4
4
  display: flex;
@@ -97,7 +97,7 @@
97
97
  flex-shrink: 0;
98
98
  color: var(--color-text-tertiary);
99
99
  font-size: var(--font-size-sm);
100
- line-height: var(--line-height-sm);
100
+ line-height: var(--line-height-tight);
101
101
  }
102
102
 
103
103
  .divider_e11f7c205[data-orientation="horizontal"] .divider__label_e11f7c205 {
@@ -1,4 +1,4 @@
1
- import "./divider-css-1ba104b9c606cbd1f542b45640fb5f2b.css"
1
+ import "./divider-css-7e0cc7d350e31172582851c6cb2cf586.css"
2
2
  import Component from '@glimmer/component';
3
3
  import { precompileTemplate } from '@ember/template-compilation';
4
4
  import { setComponentTemplate } from '@ember/component';
@@ -1,4 +1,4 @@
1
- /* <inline>/src/layout/grid-css-086976eb41686e3714554f56c098d3d5.css */
1
+ /* <inline>/src/layout/grid-css-c8259b34d7062f44e78f0a2cc139cb44.css */
2
2
 
3
3
  .grid_e46af672c {
4
4
  display: grid;
@@ -11,22 +11,22 @@
11
11
 
12
12
  /* Fixed column counts */
13
13
  .grid_e46af672c[data-columns="1"] {
14
- grid-template-columns: repeat(1, 1fr);
14
+ grid-template-columns: repeat(1, minmax(0, 1fr));
15
15
  }
16
16
  .grid_e46af672c[data-columns="2"] {
17
- grid-template-columns: repeat(2, 1fr);
17
+ grid-template-columns: repeat(2, minmax(0, 1fr));
18
18
  }
19
19
  .grid_e46af672c[data-columns="3"] {
20
- grid-template-columns: repeat(3, 1fr);
20
+ grid-template-columns: repeat(3, minmax(0, 1fr));
21
21
  }
22
22
  .grid_e46af672c[data-columns="4"] {
23
- grid-template-columns: repeat(4, 1fr);
23
+ grid-template-columns: repeat(4, minmax(0, 1fr));
24
24
  }
25
25
  .grid_e46af672c[data-columns="5"] {
26
- grid-template-columns: repeat(5, 1fr);
26
+ grid-template-columns: repeat(5, minmax(0, 1fr));
27
27
  }
28
28
  .grid_e46af672c[data-columns="6"] {
29
- grid-template-columns: repeat(6, 1fr);
29
+ grid-template-columns: repeat(6, minmax(0, 1fr));
30
30
  }
31
31
 
32
32
  /* Auto columns with min-child-width */
@@ -63,22 +63,22 @@
63
63
 
64
64
  /* Fixed row counts */
65
65
  .grid_e46af672c[data-rows="1"] {
66
- grid-template-rows: repeat(1, 1fr);
66
+ grid-template-rows: repeat(1, minmax(0, 1fr));
67
67
  }
68
68
  .grid_e46af672c[data-rows="2"] {
69
- grid-template-rows: repeat(2, 1fr);
69
+ grid-template-rows: repeat(2, minmax(0, 1fr));
70
70
  }
71
71
  .grid_e46af672c[data-rows="3"] {
72
- grid-template-rows: repeat(3, 1fr);
72
+ grid-template-rows: repeat(3, minmax(0, 1fr));
73
73
  }
74
74
  .grid_e46af672c[data-rows="4"] {
75
- grid-template-rows: repeat(4, 1fr);
75
+ grid-template-rows: repeat(4, minmax(0, 1fr));
76
76
  }
77
77
  .grid_e46af672c[data-rows="5"] {
78
- grid-template-rows: repeat(5, 1fr);
78
+ grid-template-rows: repeat(5, minmax(0, 1fr));
79
79
  }
80
80
  .grid_e46af672c[data-rows="6"] {
81
- grid-template-rows: repeat(6, 1fr);
81
+ grid-template-rows: repeat(6, minmax(0, 1fr));
82
82
  }
83
83
 
84
84
  /* Auto rows */
@@ -1,4 +1,4 @@
1
- import "./grid-css-086976eb41686e3714554f56c098d3d5.css"
1
+ import "./grid-css-c8259b34d7062f44e78f0a2cc139cb44.css"
2
2
  import Component from '@glimmer/component';
3
3
  import GridItem from './grid-item.js';
4
4
  import { precompileTemplate } from '@ember/template-compilation';
@@ -4,4 +4,5 @@ export { default as VStack } from './v-stack.js';
4
4
  export { default as Grid } from './grid.js';
5
5
  export { default as GridItem } from './grid-item.js';
6
6
  export { default as Divider } from './divider.js';
7
+ export { default as Panel } from './panel.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}