@pearpages/pulp-react 0.2.2 → 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 (156) hide show
  1. package/README.md +14 -0
  2. package/dist/accordion.js +1 -1
  3. package/dist/alert.css +18 -0
  4. package/dist/alert.css.map +1 -1
  5. package/dist/alert.js +4 -4
  6. package/dist/avatar.css +46 -0
  7. package/dist/avatar.css.map +1 -0
  8. package/dist/avatar.d.ts +41 -0
  9. package/dist/avatar.js +5 -0
  10. package/dist/avatar.js.map +1 -0
  11. package/dist/badge.css +37 -0
  12. package/dist/badge.css.map +1 -1
  13. package/dist/badge.d.ts +22 -5
  14. package/dist/badge.js +2 -1
  15. package/dist/button.css +18 -0
  16. package/dist/button.css.map +1 -1
  17. package/dist/button.d.ts +11 -2
  18. package/dist/button.js +2 -2
  19. package/dist/calendar.js +1 -1
  20. package/dist/card.js +2 -2
  21. package/dist/checkbox.js +4 -4
  22. package/dist/chip.css +95 -0
  23. package/dist/chip.css.map +1 -0
  24. package/dist/chip.d.ts +43 -0
  25. package/dist/chip.js +4 -0
  26. package/dist/chip.js.map +1 -0
  27. package/dist/{chunk-N6E2E2OY.js → chunk-2NVC3C7K.js} +3 -3
  28. package/dist/{chunk-N6E2E2OY.js.map → chunk-2NVC3C7K.js.map} +1 -1
  29. package/dist/{chunk-MF66ICX6.js → chunk-56RSH7GQ.js} +3 -3
  30. package/dist/{chunk-MF66ICX6.js.map → chunk-56RSH7GQ.js.map} +1 -1
  31. package/dist/chunk-5TYCIBLW.js +27 -0
  32. package/dist/chunk-5TYCIBLW.js.map +1 -0
  33. package/dist/chunk-7O6FTCZL.js +101 -0
  34. package/dist/chunk-7O6FTCZL.js.map +1 -0
  35. package/dist/{chunk-N4C3NQIN.js → chunk-A7TMFEQ2.js} +3 -3
  36. package/dist/{chunk-N4C3NQIN.js.map → chunk-A7TMFEQ2.js.map} +1 -1
  37. package/dist/{chunk-2NSQPN7S.js → chunk-AZAI4OVR.js} +3 -3
  38. package/dist/{chunk-2NSQPN7S.js.map → chunk-AZAI4OVR.js.map} +1 -1
  39. package/dist/{chunk-DVZ46GQN.js → chunk-CLE2QGCU.js} +3 -3
  40. package/dist/{chunk-DVZ46GQN.js.map → chunk-CLE2QGCU.js.map} +1 -1
  41. package/dist/{chunk-5TTYVQ6Q.js → chunk-DE67ECD7.js} +5 -3
  42. package/dist/chunk-DE67ECD7.js.map +1 -0
  43. package/dist/{chunk-BAPNIZDV.js → chunk-F2YI5N4L.js} +3 -3
  44. package/dist/chunk-F2YI5N4L.js.map +1 -0
  45. package/dist/{chunk-U3N3G2UA.js → chunk-FFCEY76B.js} +10 -5
  46. package/dist/chunk-FFCEY76B.js.map +1 -0
  47. package/dist/{chunk-XWPXW46D.js → chunk-GWTHITZO.js} +3 -3
  48. package/dist/{chunk-XWPXW46D.js.map → chunk-GWTHITZO.js.map} +1 -1
  49. package/dist/chunk-HDC2IQV2.js +34 -0
  50. package/dist/chunk-HDC2IQV2.js.map +1 -0
  51. package/dist/{chunk-VQN5DQP6.js → chunk-HKNIEQ2V.js} +4 -4
  52. package/dist/{chunk-VQN5DQP6.js.map → chunk-HKNIEQ2V.js.map} +1 -1
  53. package/dist/{chunk-LA3YBXCR.js → chunk-HPQ462R5.js} +3 -3
  54. package/dist/{chunk-LA3YBXCR.js.map → chunk-HPQ462R5.js.map} +1 -1
  55. package/dist/chunk-KSLKNWWM.js +28 -0
  56. package/dist/chunk-KSLKNWWM.js.map +1 -0
  57. package/dist/chunk-OKA2PLDV.js +85 -0
  58. package/dist/chunk-OKA2PLDV.js.map +1 -0
  59. package/dist/{chunk-6BIEW4WJ.js → chunk-Q6SYKNZ5.js} +3 -3
  60. package/dist/{chunk-6BIEW4WJ.js.map → chunk-Q6SYKNZ5.js.map} +1 -1
  61. package/dist/chunk-QID6YYFF.js +33 -0
  62. package/dist/chunk-QID6YYFF.js.map +1 -0
  63. package/dist/{chunk-ZVDN3GRI.js → chunk-QJG5ILK5.js} +3 -3
  64. package/dist/{chunk-ZVDN3GRI.js.map → chunk-QJG5ILK5.js.map} +1 -1
  65. package/dist/chunk-QXHSA4QD.js +43 -0
  66. package/dist/chunk-QXHSA4QD.js.map +1 -0
  67. package/dist/chunk-S632WN4W.js +106 -0
  68. package/dist/chunk-S632WN4W.js.map +1 -0
  69. package/dist/{chunk-OFFFRIJG.js → chunk-SDIK6VSC.js} +3 -3
  70. package/dist/{chunk-OFFFRIJG.js.map → chunk-SDIK6VSC.js.map} +1 -1
  71. package/dist/{chunk-M5VL22MY.js → chunk-SXMORGSG.js} +3 -3
  72. package/dist/{chunk-M5VL22MY.js.map → chunk-SXMORGSG.js.map} +1 -1
  73. package/dist/{chunk-Z6SS4G4V.js → chunk-UMK4D234.js} +3 -3
  74. package/dist/{chunk-Z6SS4G4V.js.map → chunk-UMK4D234.js.map} +1 -1
  75. package/dist/{chunk-5PYLJQJX.js → chunk-VS2HPJIX.js} +3 -3
  76. package/dist/{chunk-5PYLJQJX.js.map → chunk-VS2HPJIX.js.map} +1 -1
  77. package/dist/{chunk-NOUUOH4R.js → chunk-WDIFWMKE.js} +3 -3
  78. package/dist/chunk-WDIFWMKE.js.map +1 -0
  79. package/dist/chunk-Y7KC2FDU.js +88 -0
  80. package/dist/chunk-Y7KC2FDU.js.map +1 -0
  81. package/dist/{chunk-OFKSU77Y.js → chunk-ZEVQQQOA.js} +3 -3
  82. package/dist/{chunk-OFKSU77Y.js.map → chunk-ZEVQQQOA.js.map} +1 -1
  83. package/dist/combobox.css +3 -0
  84. package/dist/combobox.css.map +1 -1
  85. package/dist/combobox.js +2 -2
  86. package/dist/component-manifest.json +679 -8
  87. package/dist/date-picker.js +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/divider.css +37 -0
  90. package/dist/divider.css.map +1 -0
  91. package/dist/divider.d.ts +35 -0
  92. package/dist/divider.js +4 -0
  93. package/dist/divider.js.map +1 -0
  94. package/dist/empty-state.css +175 -0
  95. package/dist/empty-state.css.map +1 -0
  96. package/dist/empty-state.d.ts +40 -0
  97. package/dist/empty-state.js +7 -0
  98. package/dist/empty-state.js.map +1 -0
  99. package/dist/field.js +2 -2
  100. package/dist/icon-button.css +18 -0
  101. package/dist/icon-button.css.map +1 -1
  102. package/dist/icon-button.js +3 -3
  103. package/dist/index.css +489 -0
  104. package/dist/index.css.map +1 -1
  105. package/dist/index.d.ts +8 -2
  106. package/dist/index.js +38 -32
  107. package/dist/link.css +35 -0
  108. package/dist/link.css.map +1 -0
  109. package/dist/link.d.ts +37 -0
  110. package/dist/link.js +5 -0
  111. package/dist/link.js.map +1 -0
  112. package/dist/listbox.js +1 -1
  113. package/dist/menu.js +2 -2
  114. package/dist/pagination.css +18 -0
  115. package/dist/pagination.css.map +1 -1
  116. package/dist/pagination.js +4 -4
  117. package/dist/picker.css +3 -0
  118. package/dist/picker.css.map +1 -1
  119. package/dist/picker.js +2 -2
  120. package/dist/popover.js +2 -2
  121. package/dist/radio.js +3 -3
  122. package/dist/segmented-control.css +111 -0
  123. package/dist/segmented-control.css.map +1 -0
  124. package/dist/segmented-control.d.ts +90 -0
  125. package/dist/segmented-control.js +5 -0
  126. package/dist/segmented-control.js.map +1 -0
  127. package/dist/select.js +3 -3
  128. package/dist/sheet.css +28 -0
  129. package/dist/sheet.css.map +1 -1
  130. package/dist/sheet.d.ts +9 -2
  131. package/dist/sheet.js +1 -1
  132. package/dist/slider.js +1 -1
  133. package/dist/switch.js +4 -4
  134. package/dist/table.js +1 -1
  135. package/dist/tabs.js +1 -1
  136. package/dist/text-field.css +63 -0
  137. package/dist/text-field.css.map +1 -1
  138. package/dist/text-field.d.ts +15 -2
  139. package/dist/text-field.js +3 -3
  140. package/dist/textarea.js +3 -3
  141. package/dist/toast.css +18 -0
  142. package/dist/toast.css.map +1 -1
  143. package/dist/toast.d.ts +21 -3
  144. package/dist/toast.js +5 -5
  145. package/dist/tooltip.js +2 -2
  146. package/package.json +36 -6
  147. package/dist/chunk-5TTYVQ6Q.js.map +0 -1
  148. package/dist/chunk-737GQSOB.js +0 -19
  149. package/dist/chunk-737GQSOB.js.map +0 -1
  150. package/dist/chunk-BAPNIZDV.js.map +0 -1
  151. package/dist/chunk-IFIQLIA3.js +0 -48
  152. package/dist/chunk-IFIQLIA3.js.map +0 -1
  153. package/dist/chunk-NOUUOH4R.js.map +0 -1
  154. package/dist/chunk-TJJBCS3N.js +0 -28
  155. package/dist/chunk-TJJBCS3N.js.map +0 -1
  156. package/dist/chunk-U3N3G2UA.js.map +0 -1
@@ -1,4 +1,4 @@
1
- export { DatePicker } from './chunk-Y4YVAHD2.js';
1
+ "use client";export { DatePicker } from './chunk-Y4YVAHD2.js';
2
2
  import './chunk-JOGIN4SS.js';
3
3
  import './chunk-IRNTXAA7.js';
4
4
  import './chunk-DGIXNUNI.js';
package/dist/dialog.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Dialog, DialogSystem } from './chunk-55QUKGK2.js';
1
+ "use client";export { Dialog, DialogSystem } from './chunk-55QUKGK2.js';
2
2
  //# sourceMappingURL=dialog.js.map
3
3
  //# sourceMappingURL=dialog.js.map
@@ -0,0 +1,37 @@
1
+ /* src/divider/Divider.module.css */
2
+ @layer reset, tokens, vendor, base, components, utilities;
3
+ @layer components {
4
+ .Divider_divider {
5
+ flex-shrink: 0;
6
+ margin: 0;
7
+ border: 0;
8
+ background-color: var(--divider-color);
9
+ &[data-orientation=horizontal] {
10
+ inline-size: 100%;
11
+ block-size: var(--divider-thickness);
12
+ &[data-spacing=sm] {
13
+ margin-block: var(--divider-spacing-sm);
14
+ }
15
+ &[data-spacing=md] {
16
+ margin-block: var(--divider-spacing-md);
17
+ }
18
+ &[data-spacing=lg] {
19
+ margin-block: var(--divider-spacing-lg);
20
+ }
21
+ }
22
+ &[data-orientation=vertical] {
23
+ align-self: stretch;
24
+ inline-size: var(--divider-thickness);
25
+ &[data-spacing=sm] {
26
+ margin-inline: var(--divider-spacing-sm);
27
+ }
28
+ &[data-spacing=md] {
29
+ margin-inline: var(--divider-spacing-md);
30
+ }
31
+ &[data-spacing=lg] {
32
+ margin-inline: var(--divider-spacing-lg);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ /*# sourceMappingURL=divider.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/divider/Divider.module.css"],"sourcesContent":["/* Every value is a token: --divider-* in packages/tokens/tokens/component/divider.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .divider {\n flex-shrink: 0;\n margin: 0;\n border: 0;\n background-color: var(--divider-color);\n\n &[data-orientation=\"horizontal\"] {\n inline-size: 100%;\n block-size: var(--divider-thickness);\n\n &[data-spacing=\"sm\"] { margin-block: var(--divider-spacing-sm); }\n &[data-spacing=\"md\"] { margin-block: var(--divider-spacing-md); }\n &[data-spacing=\"lg\"] { margin-block: var(--divider-spacing-lg); }\n }\n\n &[data-orientation=\"vertical\"] {\n align-self: stretch;\n inline-size: var(--divider-thickness);\n\n &[data-spacing=\"sm\"] { margin-inline: var(--divider-spacing-sm); }\n &[data-spacing=\"md\"] { margin-inline: var(--divider-spacing-md); }\n &[data-spacing=\"lg\"] { margin-inline: var(--divider-spacing-lg); }\n }\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,iBAAa;AACb,YAAQ;AACR,YAAQ;AACR,sBAAkB,IAAI;AAEtB,KAAC,CAAC;AACA,mBAAa;AACb,kBAAY,IAAI;AAEhB,OAAC,CAAC;AAAqB,sBAAc,IAAI;AAAuB;AAChE,OAAC,CAAC;AAAqB,sBAAc,IAAI;AAAuB;AAChE,OAAC,CAAC;AAAqB,sBAAc,IAAI;AAAuB;AAClE;AAEA,KAAC,CAAC;AACA,kBAAY;AACZ,mBAAa,IAAI;AAEjB,OAAC,CAAC;AAAqB,uBAAe,IAAI;AAAuB;AACjE,OAAC,CAAC;AAAqB,uBAAe,IAAI;AAAuB;AACjE,OAAC,CAAC;AAAqB,uBAAe,IAAI;AAAuB;AACnE;AACF;AACF;","names":["divider"]}
@@ -0,0 +1,35 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, Ref } from 'react';
3
+
4
+ type DividerOrientation = 'horizontal' | 'vertical';
5
+ type DividerSpacing = 'none' | 'sm' | 'md' | 'lg';
6
+ interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
7
+ /** @default 'horizontal' */
8
+ orientation?: DividerOrientation;
9
+ /** Space on both sides, along the axis the line separates. @default 'none' */
10
+ spacing?: DividerSpacing;
11
+ /**
12
+ * A decorative line is hidden from assistive technology. Pass `false` when the
13
+ * line is the only thing that says two groups are separate. @default true
14
+ */
15
+ decorative?: boolean;
16
+ ref?: Ref<HTMLDivElement>;
17
+ }
18
+ /**
19
+ * A hairline between two groups of content, horizontal or vertical. A vertical
20
+ * divider stretches to its flex or grid row, so it needs a parent that lays it out.
21
+ *
22
+ * @status experimental
23
+ * @category Layout
24
+ * @accessibility Decorative by default: `role="none"`, nothing is announced, because headings and landmarks should already carry the structure. With `decorative={false}` it is a `separator`, and a vertical one says so through `aria-orientation`. It is never focusable: a separator that moves is a splitter, which this is not.
25
+ * @do Put it between groups inside a Card, a Menu-like list or a toolbar.
26
+ * @do Let `spacing` set the distance, so it stays on the spacing scale.
27
+ * @dont Use it to draw a border around something; that is the container's border.
28
+ * @dont Rely on it alone to tell a screen reader that a new section starts; use a heading.
29
+ */
30
+ declare function Divider({ orientation, spacing, decorative, className, ref, ...rest }: DividerProps): react.JSX.Element;
31
+ declare namespace Divider {
32
+ var displayName: string;
33
+ }
34
+
35
+ export { Divider, type DividerOrientation, type DividerProps, type DividerSpacing };
@@ -0,0 +1,4 @@
1
+ export { Divider } from './chunk-QID6YYFF.js';
2
+ import './chunk-MI4QUKQS.js';
3
+ //# sourceMappingURL=divider.js.map
4
+ //# sourceMappingURL=divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"divider.js"}
@@ -0,0 +1,175 @@
1
+ /* src/heading/Heading.module.css */
2
+ @layer reset, tokens, vendor, base, components, utilities;
3
+ @layer components {
4
+ .Heading_heading {
5
+ margin: 0;
6
+ font-family: var(--heading-font-family);
7
+ font-weight: var(--heading-font-weight);
8
+ line-height: var(--heading-line-height);
9
+ color: var(--heading-tone-default);
10
+ text-wrap: balance;
11
+ &[data-size=sm] {
12
+ font-size: var(--heading-size-sm);
13
+ }
14
+ &[data-size=md] {
15
+ font-size: var(--heading-size-md);
16
+ }
17
+ &[data-size=lg] {
18
+ font-size: var(--heading-size-lg);
19
+ }
20
+ &[data-size=xl] {
21
+ font-size: var(--heading-size-xl);
22
+ }
23
+ &[data-size="2xl"] {
24
+ font-size: var(--heading-size-2xl);
25
+ }
26
+ &[data-tone=muted] {
27
+ color: var(--heading-tone-muted);
28
+ }
29
+ }
30
+ }
31
+
32
+ /* src/stack/Stack.module.css */
33
+ @layer reset, tokens, vendor, base, components, utilities;
34
+ @layer components {
35
+ .Stack_stack {
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: var(--stack-gap-3);
39
+ margin: 0;
40
+ padding: 0;
41
+ list-style: none;
42
+ &[data-gap="1"] {
43
+ gap: var(--stack-gap-1);
44
+ }
45
+ &[data-gap="2"] {
46
+ gap: var(--stack-gap-2);
47
+ }
48
+ &[data-gap="3"] {
49
+ gap: var(--stack-gap-3);
50
+ }
51
+ &[data-gap="4"] {
52
+ gap: var(--stack-gap-4);
53
+ }
54
+ &[data-gap="5"] {
55
+ gap: var(--stack-gap-5);
56
+ }
57
+ &[data-gap="6"] {
58
+ gap: var(--stack-gap-6);
59
+ }
60
+ &[data-gap="7"] {
61
+ gap: var(--stack-gap-7);
62
+ }
63
+ &[data-gap="8"] {
64
+ gap: var(--stack-gap-8);
65
+ }
66
+ &[data-align=start] {
67
+ align-items: flex-start;
68
+ }
69
+ &[data-align=center] {
70
+ align-items: center;
71
+ }
72
+ &[data-align=end] {
73
+ align-items: flex-end;
74
+ }
75
+ &[data-align=stretch] {
76
+ align-items: stretch;
77
+ }
78
+ &[data-justify=start] {
79
+ justify-content: flex-start;
80
+ }
81
+ &[data-justify=center] {
82
+ justify-content: center;
83
+ }
84
+ &[data-justify=end] {
85
+ justify-content: flex-end;
86
+ }
87
+ &[data-justify=between] {
88
+ justify-content: space-between;
89
+ }
90
+ }
91
+ }
92
+
93
+ /* src/text/Text.module.css */
94
+ @layer reset, tokens, vendor, base, components, utilities;
95
+ @layer components {
96
+ .Text_text {
97
+ margin: 0;
98
+ font-family: var(--text-font-family-body);
99
+ font-size: var(--text-size-md);
100
+ font-weight: var(--text-weight-regular);
101
+ line-height: var(--text-line-height);
102
+ color: var(--text-tone-default);
103
+ &[data-size=xs] {
104
+ font-size: var(--text-size-xs);
105
+ }
106
+ &[data-size=sm] {
107
+ font-size: var(--text-size-sm);
108
+ }
109
+ &[data-size=lg] {
110
+ font-size: var(--text-size-lg);
111
+ }
112
+ &[data-size=xl] {
113
+ font-size: var(--text-size-xl);
114
+ }
115
+ &[data-weight=medium] {
116
+ font-weight: var(--text-weight-medium);
117
+ }
118
+ &[data-weight=semibold] {
119
+ font-weight: var(--text-weight-semibold);
120
+ }
121
+ &[data-tone=muted] {
122
+ color: var(--text-tone-muted);
123
+ }
124
+ &[data-tone=faint] {
125
+ color: var(--text-tone-faint);
126
+ }
127
+ &[data-family=mono] {
128
+ font-family: var(--text-font-family-mono);
129
+ }
130
+ &[data-align=start] {
131
+ text-align: start;
132
+ }
133
+ &[data-align=center] {
134
+ text-align: center;
135
+ }
136
+ &[data-align=end] {
137
+ text-align: end;
138
+ }
139
+ &[data-truncate] {
140
+ overflow: hidden;
141
+ text-overflow: ellipsis;
142
+ white-space: nowrap;
143
+ }
144
+ }
145
+ }
146
+
147
+ /* src/empty-state/EmptyState.module.css */
148
+ @layer reset, tokens, vendor, base, components, utilities;
149
+ @layer components {
150
+ .EmptyState_root {
151
+ box-sizing: border-box;
152
+ padding: var(--empty-state-padding);
153
+ }
154
+ .EmptyState_text {
155
+ text-align: center;
156
+ text-wrap: balance;
157
+ }
158
+ .EmptyState_icon {
159
+ display: inline-flex;
160
+ flex: none;
161
+ align-items: center;
162
+ justify-content: center;
163
+ inline-size: var(--empty-state-icon-size);
164
+ block-size: var(--empty-state-icon-size);
165
+ border-radius: var(--empty-state-icon-radius);
166
+ background: var(--empty-state-icon-neutral-bg);
167
+ color: var(--empty-state-icon-neutral-fg);
168
+ font-size: var(--empty-state-icon-glyph-size);
169
+ .EmptyState_root[data-tone=error] & {
170
+ background: var(--empty-state-icon-error-bg);
171
+ color: var(--empty-state-icon-error-fg);
172
+ }
173
+ }
174
+ }
175
+ /*# sourceMappingURL=empty-state.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/heading/Heading.module.css","../src/stack/Stack.module.css","../src/text/Text.module.css","../src/empty-state/EmptyState.module.css"],"sourcesContent":["/* Every value is a token (--heading-*). Size is a data attribute, independent of the level. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .heading {\n margin: 0;\n font-family: var(--heading-font-family);\n font-weight: var(--heading-font-weight);\n line-height: var(--heading-line-height);\n color: var(--heading-tone-default);\n text-wrap: balance;\n\n &[data-size=\"sm\"] { font-size: var(--heading-size-sm); }\n &[data-size=\"md\"] { font-size: var(--heading-size-md); }\n &[data-size=\"lg\"] { font-size: var(--heading-size-lg); }\n &[data-size=\"xl\"] { font-size: var(--heading-size-xl); }\n &[data-size=\"2xl\"] { font-size: var(--heading-size-2xl); }\n &[data-tone=\"muted\"] { color: var(--heading-tone-muted); }\n }\n}\n","/* Every value is a token (--stack-gap-*). Gap, alignment and justification are data attributes. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .stack {\n display: flex;\n flex-direction: column;\n gap: var(--stack-gap-3);\n margin: 0;\n padding: 0;\n list-style: none;\n\n &[data-gap=\"1\"] { gap: var(--stack-gap-1); }\n &[data-gap=\"2\"] { gap: var(--stack-gap-2); }\n &[data-gap=\"3\"] { gap: var(--stack-gap-3); }\n &[data-gap=\"4\"] { gap: var(--stack-gap-4); }\n &[data-gap=\"5\"] { gap: var(--stack-gap-5); }\n &[data-gap=\"6\"] { gap: var(--stack-gap-6); }\n &[data-gap=\"7\"] { gap: var(--stack-gap-7); }\n &[data-gap=\"8\"] { gap: var(--stack-gap-8); }\n &[data-align=\"start\"] { align-items: flex-start; }\n &[data-align=\"center\"] { align-items: center; }\n &[data-align=\"end\"] { align-items: flex-end; }\n &[data-align=\"stretch\"] { align-items: stretch; }\n &[data-justify=\"start\"] { justify-content: flex-start; }\n &[data-justify=\"center\"] { justify-content: center; }\n &[data-justify=\"end\"] { justify-content: flex-end; }\n &[data-justify=\"between\"] { justify-content: space-between; }\n }\n}\n","/* Every value is a token (--text-*). Variants are data attributes. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .text {\n margin: 0;\n font-family: var(--text-font-family-body);\n font-size: var(--text-size-md);\n font-weight: var(--text-weight-regular);\n line-height: var(--text-line-height);\n color: var(--text-tone-default);\n\n &[data-size=\"xs\"] { font-size: var(--text-size-xs); }\n &[data-size=\"sm\"] { font-size: var(--text-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--text-size-lg); }\n &[data-size=\"xl\"] { font-size: var(--text-size-xl); }\n &[data-weight=\"medium\"] { font-weight: var(--text-weight-medium); }\n &[data-weight=\"semibold\"] { font-weight: var(--text-weight-semibold); }\n &[data-tone=\"muted\"] { color: var(--text-tone-muted); }\n &[data-tone=\"faint\"] { color: var(--text-tone-faint); }\n &[data-family=\"mono\"] { font-family: var(--text-font-family-mono); }\n &[data-align=\"start\"] { text-align: start; }\n &[data-align=\"center\"] { text-align: center; }\n &[data-align=\"end\"] { text-align: end; }\n\n &[data-truncate] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n}\n","/* Every value is a token: --empty-state-* in packages/tokens/tokens/component/empty-state.json */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n box-sizing: border-box;\n padding: var(--empty-state-padding);\n }\n\n .text {\n text-align: center;\n text-wrap: balance;\n }\n\n .icon {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n inline-size: var(--empty-state-icon-size);\n block-size: var(--empty-state-icon-size);\n border-radius: var(--empty-state-icon-radius);\n background: var(--empty-state-icon-neutral-bg);\n color: var(--empty-state-icon-neutral-fg);\n font-size: var(--empty-state-icon-glyph-size);\n\n .root[data-tone='error'] & {\n background: var(--empty-state-icon-error-bg);\n color: var(--empty-state-icon-error-fg);\n }\n }\n}\n"],"mappings":";AAEA;AAEA;AACE,GAACA;AACC,YAAQ;AACR,iBAAa,IAAI;AACjB,iBAAa,IAAI;AACjB,iBAAa,IAAI;AACjB,WAAO,IAAI;AACX,eAAW;AAEX,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAoB;AACvD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAoB;AACvD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAoB;AACvD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAoB;AACvD,KAAC,CAAC;AAAmB,iBAAW,IAAI;AAAqB;AACzD,KAAC,CAAC;AAAqB,aAAO,IAAI;AAAuB;AAC3D;AACF;;;AClBA;AAEA;AACE,GAACC;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,YAAQ;AACR,aAAS;AACT,gBAAY;AAEZ,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAsB,mBAAa;AAAY;AACjD,KAAC,CAAC;AAAuB,mBAAa;AAAQ;AAC9C,KAAC,CAAC;AAAoB,mBAAa;AAAU;AAC7C,KAAC,CAAC;AAAwB,mBAAa;AAAS;AAChD,KAAC,CAAC;AAAwB,uBAAiB;AAAY;AACvD,KAAC,CAAC;AAAyB,uBAAiB;AAAQ;AACpD,KAAC,CAAC;AAAsB,uBAAiB;AAAU;AACnD,KAAC,CAAC;AAA0B,uBAAiB;AAAe;AAC9D;AACF;;;AC5BA;AAEA;AACE,GAACC;AACC,YAAQ;AACR,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,iBAAa,IAAI;AACjB,WAAO,IAAI;AAEX,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAkB,iBAAW,IAAI;AAAiB;AACpD,KAAC,CAAC;AAAwB,mBAAa,IAAI;AAAuB;AAClE,KAAC,CAAC;AAA0B,mBAAa,IAAI;AAAyB;AACtE,KAAC,CAAC;AAAqB,aAAO,IAAI;AAAoB;AACtD,KAAC,CAAC;AAAqB,aAAO,IAAI;AAAoB;AACtD,KAAC,CAAC;AAAsB,mBAAa,IAAI;AAA0B;AACnE,KAAC,CAAC;AAAsB,kBAAY;AAAO;AAC3C,KAAC,CAAC;AAAuB,kBAAY;AAAQ;AAC7C,KAAC,CAAC;AAAoB,kBAAY;AAAK;AAEvC,KAAC,CAAC;AACA,gBAAU;AACV,qBAAe;AACf,mBAAa;AACf;AACF;AACF;;;AC9BA;AAEA;AACE,GAACC;AACC,gBAAY;AACZ,aAAS,IAAI;AACf;AAEA,GAACC;AACC,gBAAY;AACZ,eAAW;AACb;AAEA,GAACC;AACC,aAAS;AACT,UAAM;AACN,iBAAa;AACb,qBAAiB;AACjB,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,mBAAe,IAAI;AACnB,gBAAY,IAAI;AAChB,WAAO,IAAI;AACX,eAAW,IAAI;AAEf,KAtBDF,eAsBM,CAAC,iBAAmB;AACvB,kBAAY,IAAI;AAChB,aAAO,IAAI;AACb;AACF;AACF;","names":["heading","stack","text","root","text","icon"]}
@@ -0,0 +1,40 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode, Ref } from 'react';
3
+ import { HeadingLevel } from './heading.js';
4
+
5
+ type EmptyStateTone = 'neutral' | 'error';
6
+ interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
7
+ /** What is missing, or what went wrong, in a few words. Rendered as a heading. */
8
+ title: ReactNode;
9
+ /** One or two sentences: why it is empty and what to do about it. */
10
+ description?: ReactNode;
11
+ /** A glyph, shown in a tinted disc. Decorative: the title carries the meaning. */
12
+ icon?: ReactNode;
13
+ /** One control: a Button, or a Link. For an error, the retry. */
14
+ action?: ReactNode;
15
+ /** `error` tints the icon with the error colours. It does not announce anything: see the accessibility notes. @default 'neutral' */
16
+ tone?: EmptyStateTone;
17
+ /** The heading's outline level, from where the empty state sits in the page. @default 3 */
18
+ headingLevel?: HeadingLevel;
19
+ ref?: Ref<HTMLDivElement>;
20
+ }
21
+ /**
22
+ * What a list, a search or a page shows instead of its content: nothing yet,
23
+ * nothing found, or it failed to load. An icon, a title, a sentence and one
24
+ * action, centred. Composes Heading, Text and Stack, so the type follows the
25
+ * brand without tokens of its own.
26
+ *
27
+ * @status experimental
28
+ * @category Feedback
29
+ * @accessibility The title is a real heading at `headingLevel`, so the empty region shows up in the outline; pick the level from the page, as with Heading. The icon is `aria-hidden`. Nothing is announced on its own: an empty state that is there when the page loads is just content. When it **replaces** content after the user did something (a search with no results, a failed reload), pass `role="status"` (or `role="alert"` for an error that needs attention) so it is read out; do not put `role="alert"` on one that renders with the page. The action is whatever you pass, with its own semantics.
30
+ * @do Say what to do next in the description, and make the action that next step.
31
+ * @do Use `tone="error"` with a retry action when loading failed.
32
+ * @dont Use it for a validation error or a transient message; that is a Field error, an Alert or a Toast.
33
+ * @dont Offer several actions; an empty state has one way forward.
34
+ */
35
+ declare function EmptyState({ title, description, icon, action, tone, headingLevel, className, ref, ...rest }: EmptyStateProps): react.JSX.Element;
36
+ declare namespace EmptyState {
37
+ var displayName: string;
38
+ }
39
+
40
+ export { EmptyState, type EmptyStateProps };
@@ -0,0 +1,7 @@
1
+ export { EmptyState } from './chunk-5TYCIBLW.js';
2
+ import './chunk-2E2ESMS2.js';
3
+ import './chunk-F3S5BHX2.js';
4
+ import './chunk-LKWZZIRZ.js';
5
+ import './chunk-MI4QUKQS.js';
6
+ //# sourceMappingURL=empty-state.js.map
7
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"empty-state.js"}
package/dist/field.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Field, useField } from './chunk-M5VL22MY.js';
2
- import './chunk-ZVDN3GRI.js';
1
+ "use client";export { Field, useField } from './chunk-SXMORGSG.js';
2
+ import './chunk-QJG5ILK5.js';
3
3
  import './chunk-MI4QUKQS.js';
4
4
  //# sourceMappingURL=field.js.map
5
5
  //# sourceMappingURL=field.js.map
@@ -160,6 +160,24 @@
160
160
  }
161
161
  }
162
162
  }
163
+ .Button_button[data-tone=danger] {
164
+ &[data-variant=primary] {
165
+ background-color: var(--button-danger-bg);
166
+ color: var(--button-danger-fg);
167
+ &:hover:not(:disabled, [aria-disabled=true]) {
168
+ background-color: var(--button-danger-bg-hover);
169
+ }
170
+ &:active:not(:disabled, [aria-disabled=true]) {
171
+ background-color: var(--button-danger-bg-active);
172
+ }
173
+ }
174
+ &:is([data-variant=secondary], [data-variant=ghost]) {
175
+ color: var(--button-danger-text);
176
+ &:hover:not(:disabled, [aria-disabled=true]) {
177
+ background-color: var(--button-danger-quiet-bg-hover);
178
+ }
179
+ }
180
+ }
163
181
  .Button_label {
164
182
  display: inline-block;
165
183
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton"]}
1
+ {"version":3,"sources":["../src/icon/Icon.module.css","../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css","../src/button/Button.module.css","../src/icon-button/IconButton.module.css"],"sourcesContent":["/* Every value is a token (--icon-*). The child SVG fills the box; colour is currentColor. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .icon {\n display: inline-flex;\n flex: none;\n inline-size: 1em;\n block-size: 1em;\n font-size: var(--icon-size-md);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { font-size: var(--icon-size-sm); }\n &[data-size=\"lg\"] { font-size: var(--icon-size-lg); }\n &[data-size=\"inherit\"] { font-size: inherit; }\n\n & > * {\n inline-size: 100%;\n block-size: 100%;\n }\n }\n}\n","/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n","/*\n * Every value is a token. State is expressed through data attributes so the\n * styling hooks survive a change of styling tool, and so tests and agents can\n * read state off the DOM.\n */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--button-gap);\n min-block-size: var(--button-height-md);\n padding-block: 0;\n padding-inline: var(--button-padding-inline-md);\n border: 1px solid transparent;\n border-radius: var(--button-radius);\n font-family: var(--button-font-family);\n font-size: var(--button-font-size-md);\n font-weight: var(--button-font-weight);\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition:\n background-color var(--button-motion-duration) var(--motion-easing-standard),\n border-color var(--button-motion-duration) var(--motion-easing-standard),\n color var(--button-motion-duration) var(--motion-easing-standard);\n\n &:focus-visible {\n outline: var(--button-focus-ring-width) solid var(--button-focus-ring);\n outline-offset: var(--button-focus-ring-offset);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.55;\n }\n\n &[data-loading] {\n cursor: progress;\n }\n\n &[data-size=\"sm\"] {\n min-block-size: var(--button-height-sm);\n padding-inline: var(--button-padding-inline-sm);\n font-size: var(--button-font-size-sm);\n }\n\n &[data-size=\"lg\"] {\n min-block-size: var(--button-height-lg);\n padding-inline: var(--button-padding-inline-lg);\n font-size: var(--button-font-size-lg);\n }\n\n &[data-variant=\"primary\"] {\n background-color: var(--button-primary-bg);\n color: var(--button-primary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-primary-bg-active);\n }\n }\n\n &[data-variant=\"secondary\"] {\n background-color: var(--button-secondary-bg);\n border-color: var(--button-secondary-border);\n color: var(--button-secondary-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-secondary-bg-hover);\n }\n }\n\n &[data-variant=\"ghost\"] {\n background-color: transparent;\n color: var(--button-ghost-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-ghost-bg-hover);\n }\n }\n }\n\n /* tone=\"danger\", after the variants so it wins at equal specificity plus one attribute. */\n .button[data-tone=\"danger\"] {\n &[data-variant=\"primary\"] {\n background-color: var(--button-danger-bg);\n color: var(--button-danger-fg);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-hover);\n }\n\n &:active:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-bg-active);\n }\n }\n\n &:is([data-variant=\"secondary\"], [data-variant=\"ghost\"]) {\n color: var(--button-danger-text);\n\n &:hover:not(:disabled, [aria-disabled=\"true\"]) {\n background-color: var(--button-danger-quiet-bg-hover);\n }\n }\n }\n\n .label {\n display: inline-block;\n }\n}\n","/* Squares a Button. Selectors carry the data attribute so they outrank Button's own size rules. */\n\n@layer reset, tokens, vendor, base, components, utilities;\n\n@layer components {\n .iconButton[data-icon-only] {\n gap: 0;\n inline-size: var(--icon-button-size-md);\n padding-inline: 0;\n\n &[data-size=\"sm\"] { inline-size: var(--icon-button-size-sm); }\n &[data-size=\"lg\"] { inline-size: var(--icon-button-size-lg); }\n }\n}\n"],"mappings":"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","names":["icon","root","spinner","ring","spin","button","label","iconButton"]}
@@ -1,9 +1,9 @@
1
- export { IconButton } from './chunk-MF66ICX6.js';
2
- import './chunk-5TTYVQ6Q.js';
1
+ export { IconButton } from './chunk-56RSH7GQ.js';
2
+ import './chunk-DE67ECD7.js';
3
3
  import './chunk-ZL5MMRLG.js';
4
- import './chunk-ZVDN3GRI.js';
5
4
  import './chunk-IB5UUE3S.js';
6
5
  import './chunk-O5LII5XP.js';
6
+ import './chunk-QJG5ILK5.js';
7
7
  import './chunk-MI4QUKQS.js';
8
8
  //# sourceMappingURL=icon-button.js.map
9
9
  //# sourceMappingURL=icon-button.js.map