@m3-baseui/react-tailwind 1.3.0 → 2.0.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 (175) hide show
  1. package/dist/{badge.js → components/badge/index.js} +4 -4
  2. package/dist/components/badge/index.js.map +1 -0
  3. package/dist/{bottom-app-bar.d.ts → components/bottom-app-bar/index.d.ts} +22 -21
  4. package/dist/{bottom-app-bar.js → components/bottom-app-bar/index.js} +4 -4
  5. package/dist/components/bottom-app-bar/index.js.map +1 -0
  6. package/dist/{bottom-sheet.d.ts → components/bottom-sheet/index.d.ts} +37 -36
  7. package/dist/{bottom-sheet.js → components/bottom-sheet/index.js} +4 -4
  8. package/dist/components/bottom-sheet/index.js.map +1 -0
  9. package/dist/{button.js → components/button/index.js} +3 -3
  10. package/dist/components/button/index.js.map +1 -0
  11. package/dist/{button-group.js → components/button-group/index.js} +4 -4
  12. package/dist/components/button-group/index.js.map +1 -0
  13. package/dist/{card.js → components/card/index.js} +4 -4
  14. package/dist/components/card/index.js.map +1 -0
  15. package/dist/{carousel.js → components/carousel/index.js} +4 -4
  16. package/dist/components/carousel/index.js.map +1 -0
  17. package/dist/{checkbox.d.ts → components/checkbox/index.d.ts} +22 -21
  18. package/dist/{checkbox.js → components/checkbox/index.js} +3 -3
  19. package/dist/components/checkbox/index.js.map +1 -0
  20. package/dist/{chip.js → components/chip/index.js} +3 -3
  21. package/dist/components/chip/index.js.map +1 -0
  22. package/dist/components/date-picker/index.d.ts +189 -0
  23. package/dist/{date-picker.js → components/date-picker/index.js} +4 -4
  24. package/dist/components/date-picker/index.js.map +1 -0
  25. package/dist/components/dialog/index.d.ts +116 -0
  26. package/dist/components/dialog/index.js +103 -0
  27. package/dist/components/dialog/index.js.map +1 -0
  28. package/dist/{divider.js → components/divider/index.js} +3 -3
  29. package/dist/components/divider/index.js.map +1 -0
  30. package/dist/{fab.d.ts → components/fab/index.d.ts} +29 -15
  31. package/dist/components/fab/index.js +79 -0
  32. package/dist/components/fab/index.js.map +1 -0
  33. package/dist/{fab-menu.d.ts → components/fab-menu/index.d.ts} +0 -21
  34. package/dist/{fab-menu.js → components/fab-menu/index.js} +49 -18
  35. package/dist/components/fab-menu/index.js.map +1 -0
  36. package/dist/{icon-button.js → components/icon-button/index.js} +3 -3
  37. package/dist/components/icon-button/index.js.map +1 -0
  38. package/dist/components/item/index.d.ts +95 -0
  39. package/dist/{item.js → components/item/index.js} +12 -6
  40. package/dist/components/item/index.js.map +1 -0
  41. package/dist/{list.d.ts → components/list/index.d.ts} +4 -4
  42. package/dist/{list.js → components/list/index.js} +12 -6
  43. package/dist/components/list/index.js.map +1 -0
  44. package/dist/{loading-indicator.js → components/loading-indicator/index.js} +4 -4
  45. package/dist/components/loading-indicator/index.js.map +1 -0
  46. package/dist/{menu.d.ts → components/menu/index.d.ts} +61 -60
  47. package/dist/components/menu/index.js +179 -0
  48. package/dist/components/menu/index.js.map +1 -0
  49. package/dist/components/navigation-bar/index.d.ts +92 -0
  50. package/dist/{navigation-bar.js → components/navigation-bar/index.js} +3 -3
  51. package/dist/components/navigation-bar/index.js.map +1 -0
  52. package/dist/{navigation-drawer.js → components/navigation-drawer/index.js} +4 -4
  53. package/dist/components/navigation-drawer/index.js.map +1 -0
  54. package/dist/components/navigation-rail/index.d.ts +102 -0
  55. package/dist/{navigation-rail.js → components/navigation-rail/index.js} +4 -4
  56. package/dist/components/navigation-rail/index.js.map +1 -0
  57. package/dist/components/progress/index.d.ts +127 -0
  58. package/dist/components/progress/index.js +101 -0
  59. package/dist/components/progress/index.js.map +1 -0
  60. package/dist/{radio.d.ts → components/radio/index.d.ts} +17 -16
  61. package/dist/{radio.js → components/radio/index.js} +3 -3
  62. package/dist/components/radio/index.js.map +1 -0
  63. package/dist/{search.d.ts → components/search/index.d.ts} +62 -61
  64. package/dist/{search.js → components/search/index.js} +4 -4
  65. package/dist/components/search/index.js.map +1 -0
  66. package/dist/{segmented-button.d.ts → components/segmented-button/index.d.ts} +32 -31
  67. package/dist/{segmented-button.js → components/segmented-button/index.js} +4 -4
  68. package/dist/components/segmented-button/index.js.map +1 -0
  69. package/dist/components/select/index.d.ts +253 -0
  70. package/dist/components/select/index.js +271 -0
  71. package/dist/components/select/index.js.map +1 -0
  72. package/dist/{side-sheet.js → components/side-sheet/index.js} +4 -4
  73. package/dist/components/side-sheet/index.js.map +1 -0
  74. package/dist/{slider.d.ts → components/slider/index.d.ts} +52 -51
  75. package/dist/{slider.js → components/slider/index.js} +4 -4
  76. package/dist/components/slider/index.js.map +1 -0
  77. package/dist/{snackbar.d.ts → components/snackbar/index.d.ts} +42 -41
  78. package/dist/{snackbar.js → components/snackbar/index.js} +9 -4
  79. package/dist/components/snackbar/index.js.map +1 -0
  80. package/dist/{split-button.js → components/split-button/index.js} +4 -4
  81. package/dist/components/split-button/index.js.map +1 -0
  82. package/dist/components/switch/index.d.ts +73 -0
  83. package/dist/{switch.js → components/switch/index.js} +3 -3
  84. package/dist/components/switch/index.js.map +1 -0
  85. package/dist/{tabs.js → components/tabs/index.js} +4 -4
  86. package/dist/components/tabs/index.js.map +1 -0
  87. package/dist/{textfield.d.ts → components/textfield/index.d.ts} +7 -1
  88. package/dist/{textfield.js → components/textfield/index.js} +35 -13
  89. package/dist/components/textfield/index.js.map +1 -0
  90. package/dist/components/time-picker/index.d.ts +153 -0
  91. package/dist/{time-picker.js → components/time-picker/index.js} +28 -13
  92. package/dist/components/time-picker/index.js.map +1 -0
  93. package/dist/{toolbar.js → components/toolbar/index.js} +4 -4
  94. package/dist/components/toolbar/index.js.map +1 -0
  95. package/dist/components/tooltip/index.d.ts +143 -0
  96. package/dist/components/tooltip/index.js +80 -0
  97. package/dist/components/tooltip/index.js.map +1 -0
  98. package/dist/{top-app-bar.js → components/top-app-bar/index.js} +4 -4
  99. package/dist/components/top-app-bar/index.js.map +1 -0
  100. package/dist/index.d.ts +40 -39
  101. package/dist/index.js +489 -129
  102. package/dist/index.js.map +1 -1
  103. package/package.json +151 -151
  104. package/styles/preset.css +75 -7
  105. package/styles/theme.css +2 -0
  106. package/styles/tokens.css +2 -0
  107. package/dist/badge.js.map +0 -1
  108. package/dist/bottom-app-bar.js.map +0 -1
  109. package/dist/bottom-sheet.js.map +0 -1
  110. package/dist/button-group.js.map +0 -1
  111. package/dist/button.js.map +0 -1
  112. package/dist/card.js.map +0 -1
  113. package/dist/carousel.js.map +0 -1
  114. package/dist/checkbox.js.map +0 -1
  115. package/dist/chip.js.map +0 -1
  116. package/dist/date-picker.d.ts +0 -188
  117. package/dist/date-picker.js.map +0 -1
  118. package/dist/dialog.d.ts +0 -86
  119. package/dist/dialog.js +0 -68
  120. package/dist/dialog.js.map +0 -1
  121. package/dist/divider.js.map +0 -1
  122. package/dist/fab-menu.js.map +0 -1
  123. package/dist/fab.js +0 -47
  124. package/dist/fab.js.map +0 -1
  125. package/dist/icon-button.js.map +0 -1
  126. package/dist/item.d.ts +0 -94
  127. package/dist/item.js.map +0 -1
  128. package/dist/list.js.map +0 -1
  129. package/dist/loading-indicator.js.map +0 -1
  130. package/dist/menu.js +0 -114
  131. package/dist/menu.js.map +0 -1
  132. package/dist/navigation-bar.d.ts +0 -91
  133. package/dist/navigation-bar.js.map +0 -1
  134. package/dist/navigation-drawer.js.map +0 -1
  135. package/dist/navigation-rail.d.ts +0 -101
  136. package/dist/navigation-rail.js.map +0 -1
  137. package/dist/progress.d.ts +0 -118
  138. package/dist/progress.js +0 -41
  139. package/dist/progress.js.map +0 -1
  140. package/dist/radio.js.map +0 -1
  141. package/dist/search.js.map +0 -1
  142. package/dist/segmented-button.js.map +0 -1
  143. package/dist/select.d.ts +0 -125
  144. package/dist/select.js +0 -99
  145. package/dist/select.js.map +0 -1
  146. package/dist/side-sheet.js.map +0 -1
  147. package/dist/slider.js.map +0 -1
  148. package/dist/snackbar.js.map +0 -1
  149. package/dist/split-button.js.map +0 -1
  150. package/dist/switch.d.ts +0 -72
  151. package/dist/switch.js.map +0 -1
  152. package/dist/tabs.js.map +0 -1
  153. package/dist/textfield.js.map +0 -1
  154. package/dist/time-picker.d.ts +0 -144
  155. package/dist/time-picker.js.map +0 -1
  156. package/dist/toolbar.js.map +0 -1
  157. package/dist/tooltip.d.ts +0 -61
  158. package/dist/tooltip.js +0 -52
  159. package/dist/tooltip.js.map +0 -1
  160. package/dist/top-app-bar.js.map +0 -1
  161. /package/dist/{badge.d.ts → components/badge/index.d.ts} +0 -0
  162. /package/dist/{button.d.ts → components/button/index.d.ts} +0 -0
  163. /package/dist/{button-group.d.ts → components/button-group/index.d.ts} +0 -0
  164. /package/dist/{card.d.ts → components/card/index.d.ts} +0 -0
  165. /package/dist/{carousel.d.ts → components/carousel/index.d.ts} +0 -0
  166. /package/dist/{chip.d.ts → components/chip/index.d.ts} +0 -0
  167. /package/dist/{divider.d.ts → components/divider/index.d.ts} +0 -0
  168. /package/dist/{icon-button.d.ts → components/icon-button/index.d.ts} +0 -0
  169. /package/dist/{loading-indicator.d.ts → components/loading-indicator/index.d.ts} +0 -0
  170. /package/dist/{navigation-drawer.d.ts → components/navigation-drawer/index.d.ts} +0 -0
  171. /package/dist/{side-sheet.d.ts → components/side-sheet/index.d.ts} +0 -0
  172. /package/dist/{split-button.d.ts → components/split-button/index.d.ts} +0 -0
  173. /package/dist/{tabs.d.ts → components/tabs/index.d.ts} +0 -0
  174. /package/dist/{toolbar.d.ts → components/toolbar/index.d.ts} +0 -0
  175. /package/dist/{top-app-bar.d.ts → components/top-app-bar/index.d.ts} +0 -0
@@ -1,27 +1,28 @@
1
1
  import * as _m3_baseui_core from '@m3-baseui/core';
2
2
  import * as react from 'react';
3
3
  import * as _base_ui_react from '@base-ui/react';
4
- import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
5
4
  import * as tailwind_variants from 'tailwind-variants';
5
+ import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
6
+ import * as tailwind_merge from 'tailwind-merge';
6
7
 
7
8
  declare const segmentedButtonTv: tailwind_variants.TVReturnType<{
8
9
  [key: string]: {
9
- [key: string]: tailwind_variants.ClassValue | {
10
- root?: tailwind_variants.ClassValue;
11
- label?: tailwind_variants.ClassValue;
12
- icon?: tailwind_variants.ClassValue;
13
- check?: tailwind_variants.ClassValue;
14
- item?: tailwind_variants.ClassValue;
10
+ [key: string]: tailwind_merge.ClassNameValue | {
11
+ label?: tailwind_merge.ClassNameValue;
12
+ icon?: tailwind_merge.ClassNameValue;
13
+ check?: tailwind_merge.ClassNameValue;
14
+ root?: tailwind_merge.ClassNameValue;
15
+ item?: tailwind_merge.ClassNameValue;
15
16
  };
16
17
  };
17
18
  } | {
18
19
  [x: string]: {
19
- [x: string]: tailwind_variants.ClassValue | {
20
- root?: tailwind_variants.ClassValue;
21
- label?: tailwind_variants.ClassValue;
22
- icon?: tailwind_variants.ClassValue;
23
- check?: tailwind_variants.ClassValue;
24
- item?: tailwind_variants.ClassValue;
20
+ [x: string]: tailwind_merge.ClassNameValue | {
21
+ label?: tailwind_merge.ClassNameValue;
22
+ icon?: tailwind_merge.ClassNameValue;
23
+ check?: tailwind_merge.ClassNameValue;
24
+ root?: tailwind_merge.ClassNameValue;
25
+ item?: tailwind_merge.ClassNameValue;
25
26
  };
26
27
  };
27
28
  } | {}, {
@@ -32,22 +33,22 @@ declare const segmentedButtonTv: tailwind_variants.TVReturnType<{
32
33
  label: string;
33
34
  }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
34
35
  [key: string]: {
35
- [key: string]: tailwind_variants.ClassValue | {
36
- root?: tailwind_variants.ClassValue;
37
- label?: tailwind_variants.ClassValue;
38
- icon?: tailwind_variants.ClassValue;
39
- check?: tailwind_variants.ClassValue;
40
- item?: tailwind_variants.ClassValue;
36
+ [key: string]: tailwind_merge.ClassNameValue | {
37
+ label?: tailwind_merge.ClassNameValue;
38
+ icon?: tailwind_merge.ClassNameValue;
39
+ check?: tailwind_merge.ClassNameValue;
40
+ root?: tailwind_merge.ClassNameValue;
41
+ item?: tailwind_merge.ClassNameValue;
41
42
  };
42
43
  };
43
44
  } | {}>, {
44
45
  [key: string]: {
45
- [key: string]: tailwind_variants.ClassValue | {
46
- root?: tailwind_variants.ClassValue;
47
- label?: tailwind_variants.ClassValue;
48
- icon?: tailwind_variants.ClassValue;
49
- check?: tailwind_variants.ClassValue;
50
- item?: tailwind_variants.ClassValue;
46
+ [key: string]: tailwind_merge.ClassNameValue | {
47
+ label?: tailwind_merge.ClassNameValue;
48
+ icon?: tailwind_merge.ClassNameValue;
49
+ check?: tailwind_merge.ClassNameValue;
50
+ root?: tailwind_merge.ClassNameValue;
51
+ item?: tailwind_merge.ClassNameValue;
51
52
  };
52
53
  };
53
54
  } | {}, {
@@ -64,12 +65,12 @@ declare const segmentedButtonTv: tailwind_variants.TVReturnType<{
64
65
  label: string;
65
66
  }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
66
67
  [key: string]: {
67
- [key: string]: tailwind_variants.ClassValue | {
68
- root?: tailwind_variants.ClassValue;
69
- label?: tailwind_variants.ClassValue;
70
- icon?: tailwind_variants.ClassValue;
71
- check?: tailwind_variants.ClassValue;
72
- item?: tailwind_variants.ClassValue;
68
+ [key: string]: tailwind_merge.ClassNameValue | {
69
+ label?: tailwind_merge.ClassNameValue;
70
+ icon?: tailwind_merge.ClassNameValue;
71
+ check?: tailwind_merge.ClassNameValue;
72
+ root?: tailwind_merge.ClassNameValue;
73
+ item?: tailwind_merge.ClassNameValue;
73
74
  };
74
75
  };
75
76
  } | {}>, unknown, unknown, undefined>>;
@@ -2,7 +2,7 @@
2
2
  import { createSegmentedButton } from '@m3-baseui/core';
3
3
  import { tv as tv$1 } from 'tailwind-variants';
4
4
 
5
- // src/segmented-button.ts
5
+ // src/components/segmented-button/segmented-button.ts
6
6
  var TYPESCALE = [
7
7
  "display-large",
8
8
  "display-medium",
@@ -31,7 +31,7 @@ var tv = (options, config) => tv$1(options, {
31
31
  }
32
32
  });
33
33
 
34
- // src/segmented-button.ts
34
+ // src/components/segmented-button/segmented-button.ts
35
35
  var segmentedButtonTv = tv({
36
36
  slots: {
37
37
  root: "inline-flex items-stretch h-10 rounded-full border border-outline",
@@ -72,5 +72,5 @@ var SegmentedButton = createSegmentedButton({
72
72
  });
73
73
 
74
74
  export { SegmentedButton, segmentedButtonTv };
75
- //# sourceMappingURL=segmented-button.js.map
76
- //# sourceMappingURL=segmented-button.js.map
75
+ //# sourceMappingURL=index.js.map
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/tv.ts","../../../src/components/segmented-button/segmented-button.ts"],"names":["baseTv"],"mappings":";;;;;AAeA,IAAM,SAAA,GAAY;AAAA,EAChB,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,EAAA,GAAS,CAAC,OAAA,EAAS,MAAA,KAC9BA,KAAO,OAAA,EAAS;AAAA,EACd,GAAG,MAAA;AAAA,EACH,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ;AAAA,MACN,WAAA,EAAa;AAAA,QACX,WAAA,EAAa,CAAC,EAAE,IAAA,EAAM,CAAC,GAAG,SAAS,GAAG;AAAA;AACxC;AACF;AAEJ,CAAC,CAAA;;;AC/BI,IAAM,oBAAoB,EAAA,CAAG;AAAA,EAClC,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,mEAAA;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,mGAAA;AAAA,MACA,0CAAA;AAAA,MACA,0GAAA;AAAA,MACA,kCAAA;AAAA,MACA,8CAAA;AAAA,MACA,4IAAA;AAAA,MACA,kDAAA;AAAA,MACA,0DAAA;AAAA,MACA,qDAAA;AAAA,MACA,kFAAA;AAAA;AAAA,MAEA,4FAAA;AAAA,MACA,sEAAA;AAAA,MACA,yEAAA;AAAA,MACA,wDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,6GAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA,EAAM,kGAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC;AAED,IAAM,IAAI,iBAAA,EAAkB;AACrB,IAAM,kBAAkB,qBAAA,CAAsB;AAAA,EACnD,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,EACb,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,EACb,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,EACf,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,EACb,KAAA,EAAO,EAAE,KAAA;AACX,CAAC","file":"index.js","sourcesContent":["/**\n * tv.ts — a tailwind-variants factory pre-configured for the M3 typescale.\n *\n * The Tailwind v4 preset exposes the 15 typescale roles as `text-<role>`\n * font-size utilities (e.g. `text-body-small`, `text-label-large`). Stock\n * tailwind-merge does not know these custom names, so it groups them with the\n * `text-<color>` utilities and drops one when a slot sets both a color *and* a\n * typescale (the common M3 case). That silently strips either the color or the\n * type, breaking token compliance.\n *\n * Teaching tailwind-merge that the typescale names belong to the `font-size`\n * group keeps color and type independent, so both survive the merge.\n */\nimport { type TV, tv as baseTv } from 'tailwind-variants';\n\nconst TYPESCALE = [\n 'display-large',\n 'display-medium',\n 'display-small',\n 'headline-large',\n 'headline-medium',\n 'headline-small',\n 'title-large',\n 'title-medium',\n 'title-small',\n 'body-large',\n 'body-medium',\n 'body-small',\n 'label-large',\n 'label-medium',\n 'label-small',\n] as const;\n\nexport const tv: TV = (options, config) =>\n baseTv(options, {\n ...config,\n twMergeConfig: {\n extend: {\n classGroups: {\n 'font-size': [{ text: [...TYPESCALE] }],\n },\n },\n },\n });\n","/**\n * segmented-button.ts — tailwind-variants slots for the M3 SegmentedButton.\n *\n * A 40dp-tall connected row with a shared outline; segments divide with a left\n * border. The selected segment surfaces `data-pressed` (Base UI Toggle) → a\n * secondary-container fill that reveals the leading checkmark (and hides any\n * provided icon) via the `group`. State layer is the item `::before`; the\n * pointer ripple is added by the factory. Same DOM as the VE build.\n */\nimport { createSegmentedButton } from '@m3-baseui/core';\nimport { tv } from '../../tv';\n\nexport const segmentedButtonTv = tv({\n slots: {\n root: 'inline-flex items-stretch h-10 rounded-full border border-outline',\n item: [\n 'group relative inline-flex flex-1 items-center justify-center gap-2 px-3 min-w-12 overflow-hidden',\n 'first:rounded-s-full last:rounded-e-full',\n 'bg-transparent border-0 border-l border-outline first:border-l-0 cursor-pointer select-none outline-none',\n 'text-label-large text-on-surface',\n 'transition-colors duration-150 ease-standard',\n 'before:absolute before:inset-0 before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100',\n 'hover:before:opacity-[var(--md-sys-state-hover)]',\n 'focus-visible:before:opacity-[var(--md-sys-state-focus)]',\n 'active:before:opacity-[var(--md-sys-state-pressed)]',\n 'data-[pressed]:bg-secondary-container data-[pressed]:text-on-secondary-container',\n // M3 disabled: label on-surface/38, divider outline on-surface/12 (material-web).\n 'focus-visible:outline-[3px] focus-visible:outline-offset-2 focus-visible:outline-secondary',\n 'data-[disabled]:pointer-events-none data-[disabled]:before:opacity-0',\n 'data-[disabled]:text-on-surface/38 data-[disabled]:border-on-surface/12',\n 'disabled:pointer-events-none disabled:before:opacity-0',\n 'disabled:text-on-surface/38 disabled:border-on-surface/12',\n ],\n check: [\n 'inline-flex items-center justify-center shrink-0 h-[18px] w-0 opacity-0 overflow-hidden pointer-events-none',\n 'transition-all duration-150 ease-standard',\n 'group-data-[pressed]:w-[18px] group-data-[pressed]:opacity-100',\n ],\n icon: 'inline-flex items-center justify-center shrink-0 [&_svg]:size-[18px] group-data-[pressed]:hidden',\n label: 'truncate',\n },\n});\n\nconst s = segmentedButtonTv();\nexport const SegmentedButton = createSegmentedButton({\n root: s.root(),\n item: s.item(),\n check: s.check(),\n icon: s.icon(),\n label: s.label(),\n});\n"]}
@@ -0,0 +1,253 @@
1
+ import * as react from 'react';
2
+ import * as _m3_baseui_core from '@m3-baseui/core';
3
+ export { SelectFieldProps } from '@m3-baseui/core';
4
+ import * as _base_ui_react from '@base-ui/react';
5
+ import * as tailwind_variants from 'tailwind-variants';
6
+ import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
7
+ import * as tailwind_merge from 'tailwind-merge';
8
+
9
+ declare const selectTv: tailwind_variants.TVReturnType<{
10
+ [key: string]: {
11
+ [key: string]: tailwind_merge.ClassNameValue | {
12
+ value?: tailwind_merge.ClassNameValue;
13
+ popup?: tailwind_merge.ClassNameValue;
14
+ icon?: tailwind_merge.ClassNameValue;
15
+ itemIndicator?: tailwind_merge.ClassNameValue;
16
+ groupLabel?: tailwind_merge.ClassNameValue;
17
+ item?: tailwind_merge.ClassNameValue;
18
+ trigger?: tailwind_merge.ClassNameValue;
19
+ scrollUpArrow?: tailwind_merge.ClassNameValue;
20
+ scrollDownArrow?: tailwind_merge.ClassNameValue;
21
+ };
22
+ };
23
+ } | {
24
+ [x: string]: {
25
+ [x: string]: tailwind_merge.ClassNameValue | {
26
+ value?: tailwind_merge.ClassNameValue;
27
+ popup?: tailwind_merge.ClassNameValue;
28
+ icon?: tailwind_merge.ClassNameValue;
29
+ itemIndicator?: tailwind_merge.ClassNameValue;
30
+ groupLabel?: tailwind_merge.ClassNameValue;
31
+ item?: tailwind_merge.ClassNameValue;
32
+ trigger?: tailwind_merge.ClassNameValue;
33
+ scrollUpArrow?: tailwind_merge.ClassNameValue;
34
+ scrollDownArrow?: tailwind_merge.ClassNameValue;
35
+ };
36
+ };
37
+ } | {}, {
38
+ trigger: string[];
39
+ value: string;
40
+ icon: string;
41
+ popup: string;
42
+ item: string[];
43
+ itemIndicator: string;
44
+ groupLabel: string;
45
+ scrollUpArrow: string[];
46
+ scrollDownArrow: string[];
47
+ }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
48
+ [key: string]: {
49
+ [key: string]: tailwind_merge.ClassNameValue | {
50
+ value?: tailwind_merge.ClassNameValue;
51
+ popup?: tailwind_merge.ClassNameValue;
52
+ icon?: tailwind_merge.ClassNameValue;
53
+ itemIndicator?: tailwind_merge.ClassNameValue;
54
+ groupLabel?: tailwind_merge.ClassNameValue;
55
+ item?: tailwind_merge.ClassNameValue;
56
+ trigger?: tailwind_merge.ClassNameValue;
57
+ scrollUpArrow?: tailwind_merge.ClassNameValue;
58
+ scrollDownArrow?: tailwind_merge.ClassNameValue;
59
+ };
60
+ };
61
+ } | {}>, {
62
+ [key: string]: {
63
+ [key: string]: tailwind_merge.ClassNameValue | {
64
+ value?: tailwind_merge.ClassNameValue;
65
+ popup?: tailwind_merge.ClassNameValue;
66
+ icon?: tailwind_merge.ClassNameValue;
67
+ itemIndicator?: tailwind_merge.ClassNameValue;
68
+ groupLabel?: tailwind_merge.ClassNameValue;
69
+ item?: tailwind_merge.ClassNameValue;
70
+ trigger?: tailwind_merge.ClassNameValue;
71
+ scrollUpArrow?: tailwind_merge.ClassNameValue;
72
+ scrollDownArrow?: tailwind_merge.ClassNameValue;
73
+ };
74
+ };
75
+ } | {}, {
76
+ trigger: string[];
77
+ value: string;
78
+ icon: string;
79
+ popup: string;
80
+ item: string[];
81
+ itemIndicator: string;
82
+ groupLabel: string;
83
+ scrollUpArrow: string[];
84
+ scrollDownArrow: string[];
85
+ }, tailwind_variants.TVReturnType<unknown, {
86
+ trigger: string[];
87
+ value: string;
88
+ icon: string;
89
+ popup: string;
90
+ item: string[];
91
+ itemIndicator: string;
92
+ groupLabel: string;
93
+ scrollUpArrow: string[];
94
+ scrollDownArrow: string[];
95
+ }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
96
+ [key: string]: {
97
+ [key: string]: tailwind_merge.ClassNameValue | {
98
+ value?: tailwind_merge.ClassNameValue;
99
+ popup?: tailwind_merge.ClassNameValue;
100
+ icon?: tailwind_merge.ClassNameValue;
101
+ itemIndicator?: tailwind_merge.ClassNameValue;
102
+ groupLabel?: tailwind_merge.ClassNameValue;
103
+ item?: tailwind_merge.ClassNameValue;
104
+ trigger?: tailwind_merge.ClassNameValue;
105
+ scrollUpArrow?: tailwind_merge.ClassNameValue;
106
+ scrollDownArrow?: tailwind_merge.ClassNameValue;
107
+ };
108
+ };
109
+ } | {}>, unknown, unknown, undefined>>;
110
+ /**
111
+ * Exposed Dropdown Menu anchor (issue #96): the Select rendered as an M3
112
+ * TextField. The floating label, focus/filled border and trailing dropdown
113
+ * icon key off the trigger's own field state — Base UI stamps `data-focused` /
114
+ * `data-filled` / `data-invalid` / `data-popup-open` on the trigger (the
115
+ * `group/field`) once it sits inside `Field.Root`. Mirrors the standalone
116
+ * TextField so the anchor reads identically. Same DOM as the VE build.
117
+ */
118
+ declare const selectFieldTv: tailwind_variants.TVReturnType<{
119
+ variant: {
120
+ filled: {
121
+ field: string[];
122
+ value: string;
123
+ label: string[];
124
+ };
125
+ outlined: {
126
+ field: string[];
127
+ label: string[];
128
+ };
129
+ };
130
+ }, {
131
+ root: string;
132
+ field: string[];
133
+ inputWrap: string;
134
+ value: string;
135
+ label: string[];
136
+ icon: string[];
137
+ leadingIcon: string;
138
+ supporting: string[];
139
+ supportingText: string;
140
+ }, undefined, tailwind_variants_dist_config_js.TVConfig<{
141
+ variant: {
142
+ filled: {
143
+ field: string[];
144
+ value: string;
145
+ label: string[];
146
+ };
147
+ outlined: {
148
+ field: string[];
149
+ label: string[];
150
+ };
151
+ };
152
+ }, {
153
+ variant: {
154
+ filled: {
155
+ field: string[];
156
+ value: string;
157
+ label: string[];
158
+ };
159
+ outlined: {
160
+ field: string[];
161
+ label: string[];
162
+ };
163
+ };
164
+ }>, {
165
+ variant: {
166
+ filled: {
167
+ field: string[];
168
+ value: string;
169
+ label: string[];
170
+ };
171
+ outlined: {
172
+ field: string[];
173
+ label: string[];
174
+ };
175
+ };
176
+ }, {
177
+ root: string;
178
+ field: string[];
179
+ inputWrap: string;
180
+ value: string;
181
+ label: string[];
182
+ icon: string[];
183
+ leadingIcon: string;
184
+ supporting: string[];
185
+ supportingText: string;
186
+ }, tailwind_variants.TVReturnType<{
187
+ variant: {
188
+ filled: {
189
+ field: string[];
190
+ value: string;
191
+ label: string[];
192
+ };
193
+ outlined: {
194
+ field: string[];
195
+ label: string[];
196
+ };
197
+ };
198
+ }, {
199
+ root: string;
200
+ field: string[];
201
+ inputWrap: string;
202
+ value: string;
203
+ label: string[];
204
+ icon: string[];
205
+ leadingIcon: string;
206
+ supporting: string[];
207
+ supportingText: string;
208
+ }, undefined, tailwind_variants_dist_config_js.TVConfig<{
209
+ variant: {
210
+ filled: {
211
+ field: string[];
212
+ value: string;
213
+ label: string[];
214
+ };
215
+ outlined: {
216
+ field: string[];
217
+ label: string[];
218
+ };
219
+ };
220
+ }, {
221
+ variant: {
222
+ filled: {
223
+ field: string[];
224
+ value: string;
225
+ label: string[];
226
+ };
227
+ outlined: {
228
+ field: string[];
229
+ label: string[];
230
+ };
231
+ };
232
+ }>, unknown, unknown, undefined>>;
233
+ declare const Select: {
234
+ Root: typeof _base_ui_react.SelectRoot;
235
+ Field: react.ForwardRefExoticComponent<_m3_baseui_core.SelectFieldOwnProps & Omit<_base_ui_react.SelectRoot.Props<unknown, boolean | undefined>, "className" | "children"> & react.RefAttributes<HTMLButtonElement>>;
236
+ Label: react.ForwardRefExoticComponent<Omit<_base_ui_react.SelectLabelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
237
+ Trigger: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>, "ref"> & react.RefAttributes<unknown>>;
238
+ Value: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectValueProps, "ref"> & react.RefAttributes<HTMLSpanElement>, "ref"> & react.RefAttributes<unknown>>;
239
+ Icon: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectIconProps, "ref"> & react.RefAttributes<HTMLSpanElement>, "ref"> & react.RefAttributes<unknown>>;
240
+ Portal: react.ForwardRefExoticComponent<Omit<_base_ui_react.SelectPortalProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
241
+ Positioner: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectPositionerProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
242
+ Popup: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectPopupProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
243
+ List: react.ForwardRefExoticComponent<Omit<_base_ui_react.SelectListProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
244
+ Item: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectItemProps, "ref"> & react.RefAttributes<HTMLElement>, "ref"> & react.RefAttributes<unknown>>;
245
+ ItemText: react.NamedExoticComponent<Omit<_base_ui_react.SelectItemTextProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
246
+ ItemIndicator: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectItemIndicatorProps, "ref"> & react.RefAttributes<HTMLSpanElement>, "ref"> & react.RefAttributes<unknown>>;
247
+ ScrollUpArrow: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectScrollUpArrowProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
248
+ ScrollDownArrow: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectScrollDownArrowProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
249
+ Group: react.ForwardRefExoticComponent<Omit<_base_ui_react.SelectGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
250
+ GroupLabel: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.SelectGroupLabelProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
251
+ };
252
+
253
+ export { Select, selectFieldTv, selectTv };
@@ -0,0 +1,271 @@
1
+ "use client";
2
+ import { createSelect } from '@m3-baseui/core';
3
+ import { tv as tv$1 } from 'tailwind-variants';
4
+
5
+ // src/components/select/select.ts
6
+ var TYPESCALE = [
7
+ "display-large",
8
+ "display-medium",
9
+ "display-small",
10
+ "headline-large",
11
+ "headline-medium",
12
+ "headline-small",
13
+ "title-large",
14
+ "title-medium",
15
+ "title-small",
16
+ "body-large",
17
+ "body-medium",
18
+ "body-small",
19
+ "label-large",
20
+ "label-medium",
21
+ "label-small"
22
+ ];
23
+ var tv = (options, config) => tv$1(options, {
24
+ ...config,
25
+ twMergeConfig: {
26
+ extend: {
27
+ classGroups: {
28
+ "font-size": [{ text: [...TYPESCALE] }]
29
+ }
30
+ }
31
+ }
32
+ });
33
+
34
+ // src/components/menu/menu-selectable-item.ts
35
+ var menuSelectableItemStateLayer = [
36
+ "before:absolute before:inset-0 before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100",
37
+ "hover:before:opacity-[var(--md-sys-state-hover)]",
38
+ "data-[highlighted]:before:opacity-[var(--md-sys-state-hover)]",
39
+ "active:before:opacity-[var(--md-sys-state-pressed)]"
40
+ ];
41
+ var menuSelectableItemSelectedFill = [
42
+ "data-[selected]:bg-secondary-container data-[selected]:text-on-secondary-container",
43
+ "data-[checked]:bg-secondary-container data-[checked]:text-on-secondary-container"
44
+ ];
45
+ var menuSelectableItemPositionShape = [
46
+ "data-[selected]:data-[position=only]:rounded-extra-small",
47
+ "data-[selected]:data-[position=first]:rounded-t-extra-small",
48
+ "data-[selected]:data-[position=middle]:rounded-none",
49
+ "data-[selected]:data-[position=last]:rounded-b-extra-small",
50
+ "data-[checked]:data-[position=only]:rounded-extra-small",
51
+ "data-[checked]:data-[position=first]:rounded-t-extra-small",
52
+ "data-[checked]:data-[position=middle]:rounded-none",
53
+ "data-[checked]:data-[position=last]:rounded-b-extra-small"
54
+ ];
55
+ var menuSelectableItemPositionShapeFallback = [
56
+ "data-[selected]:not([data-position]):rounded-extra-small",
57
+ "data-[checked]:not([data-position]):rounded-extra-small"
58
+ ];
59
+ var menuSelectableItemDisabled = [
60
+ "data-[disabled]:text-on-surface/[0.38] data-[disabled]:before:opacity-0 data-[disabled]:pointer-events-none",
61
+ "data-[disabled]:data-[selected]:bg-transparent data-[disabled]:data-[selected]:text-on-surface/[0.38]",
62
+ "data-[disabled]:data-[checked]:bg-transparent data-[disabled]:data-[checked]:text-on-surface/[0.38]"
63
+ ];
64
+ var menuSelectableItemBase = [
65
+ "group relative cursor-pointer select-none outline-none text-label-large text-on-surface",
66
+ "h-12 px-3 overflow-hidden",
67
+ ...menuSelectableItemStateLayer,
68
+ ...menuSelectableItemSelectedFill,
69
+ ...menuSelectableItemPositionShape,
70
+ ...menuSelectableItemPositionShapeFallback,
71
+ ...menuSelectableItemDisabled
72
+ ];
73
+ var menuSelectableItemTv = tv({
74
+ slots: {
75
+ /** Select row: check + label + optional trailing meta. */
76
+ selectItem: ["grid grid-cols-[24px_1fr_auto] items-center gap-3", ...menuSelectableItemBase],
77
+ /** Menu checkbox / radio row: check + label. */
78
+ menuSelectableItem: ["grid grid-cols-[24px_1fr] items-center gap-3", ...menuSelectableItemBase],
79
+ itemIndicator: [
80
+ "inline-flex items-center justify-center text-on-surface",
81
+ "invisible group-data-[selected]:visible group-data-[checked]:visible",
82
+ "group-data-[selected]:text-on-secondary-container group-data-[checked]:text-on-secondary-container",
83
+ "group-data-[disabled]:text-on-surface/[0.38]"
84
+ ]
85
+ }
86
+ });
87
+ var menuSelectableItem = menuSelectableItemTv();
88
+
89
+ // src/components/menu/menu-surface.ts
90
+ var menuSurfaceBase = [
91
+ "py-2",
92
+ "bg-surface-container text-on-surface rounded-extra-small shadow-level2",
93
+ "origin-[var(--transform-origin)] transition-[opacity,transform] duration-150 ease-standard",
94
+ "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
95
+ "data-[ending-style]:opacity-0",
96
+ "focus:outline-none"
97
+ ];
98
+ var menuSurfaceTv = tv({
99
+ slots: {
100
+ popup: ["max-w-[280px]", ...menuSurfaceBase],
101
+ groupLabel: "px-3 py-2 text-label-small text-on-surface-variant"
102
+ },
103
+ variants: {
104
+ width: {
105
+ /** Standalone Menu: 112–280dp. */
106
+ standard: { popup: "min-w-[112px]" },
107
+ /** Exposed Dropdown / Select: at least anchor width, capped at 280dp. */
108
+ anchor: { popup: "min-w-[max(112px,var(--anchor-width))]" }
109
+ },
110
+ scroll: {
111
+ none: {},
112
+ /** Select popup: clamp height and scroll the list. */
113
+ auto: { popup: "max-h-[var(--available-height)] overflow-auto" }
114
+ }
115
+ },
116
+ defaultVariants: {
117
+ width: "standard",
118
+ scroll: "none"
119
+ }
120
+ });
121
+ menuSurfaceTv();
122
+
123
+ // src/components/select/select.ts
124
+ var surface = menuSurfaceTv({ width: "anchor", scroll: "auto" });
125
+ var selectable = menuSelectableItem;
126
+ var selectTv = tv({
127
+ slots: {
128
+ trigger: [
129
+ "group relative inline-flex items-center justify-between gap-2 box-border",
130
+ "h-14 min-w-[200px] px-4 rounded-extra-small border border-outline bg-transparent",
131
+ "text-on-surface text-body-large cursor-pointer outline-none text-left",
132
+ "transition-colors duration-150 ease-standard",
133
+ // focus/open = 3dp primary outline; padding drops 2px to keep content steady
134
+ "data-[popup-open]:border-primary data-[popup-open]:border-[3px] data-[popup-open]:px-[14px]",
135
+ "focus-visible:border-primary focus-visible:border-[3px] focus-visible:px-[14px]",
136
+ "data-[disabled]:border-on-surface/[0.12] data-[disabled]:text-on-surface/[0.38] data-[disabled]:pointer-events-none"
137
+ ],
138
+ value: "flex-1 truncate",
139
+ icon: "flex text-on-surface-variant transition-transform duration-150 group-data-[popup-open]:rotate-180 group-data-[disabled]:text-on-surface/[0.38]",
140
+ popup: surface.popup(),
141
+ item: [
142
+ selectable.selectItem(),
143
+ // M3 trailing supporting text (e.g. meta) sits in the last column.
144
+ "[&_[data-slot=select-trailing]]:pl-4 [&_[data-slot=select-trailing]]:text-label-large [&_[data-slot=select-trailing]]:text-on-surface-variant",
145
+ "data-[selected]:[&_[data-slot=select-trailing]]:text-on-secondary-container",
146
+ "data-[disabled]:[&_[data-slot=select-trailing]]:text-on-surface/[0.38]"
147
+ ],
148
+ itemIndicator: selectable.itemIndicator(),
149
+ groupLabel: surface.groupLabel(),
150
+ // Sticky scroll affordances at the popup edges; surface-tinted with a chevron.
151
+ scrollUpArrow: [
152
+ "sticky top-0 z-[1] flex items-center justify-center h-6 cursor-default",
153
+ "bg-surface-container text-on-surface-variant [&>svg]:size-5"
154
+ ],
155
+ scrollDownArrow: [
156
+ "sticky bottom-0 z-[1] flex items-center justify-center h-6 cursor-default",
157
+ "bg-surface-container text-on-surface-variant [&>svg]:size-5"
158
+ ]
159
+ }
160
+ });
161
+ var selectFieldTv = tv({
162
+ slots: {
163
+ // The `group` hook lives here (not in engine-neutral core): supporting text
164
+ // keys its error color off Field.Root's `group-data-[invalid]`.
165
+ root: "group flex flex-col gap-1 min-w-[210px]",
166
+ field: [
167
+ "group/field relative flex items-stretch gap-3 h-14 px-4 box-border w-full",
168
+ "text-on-surface text-body-large cursor-pointer text-left outline-none",
169
+ "transition-[border-color,padding] duration-150 ease-standard",
170
+ "data-[disabled]:opacity-[0.38] data-[disabled]:pointer-events-none"
171
+ ],
172
+ inputWrap: "relative z-0 flex-1 flex items-center min-w-0 overflow-visible",
173
+ value: "flex-1 truncate text-body-large text-on-surface",
174
+ label: [
175
+ "absolute left-0 pointer-events-none origin-left",
176
+ "top-1/2 -translate-y-1/2 text-body-large text-on-surface-variant",
177
+ "transition-all duration-150 ease-standard",
178
+ "group-data-[focused]/field:text-primary group-data-[invalid]/field:text-error"
179
+ ],
180
+ icon: [
181
+ // Disabled dimming comes from the field's own opacity (0.38); no per-icon
182
+ // color override here, else it would compound to ~0.14.
183
+ "flex items-center text-on-surface-variant transition-transform duration-150 [&>svg]:size-6",
184
+ "group-data-[popup-open]/field:rotate-180"
185
+ ],
186
+ leadingIcon: "inline-flex items-center justify-center shrink-0 text-on-surface-variant [&>svg]:size-6",
187
+ supporting: [
188
+ "flex justify-between gap-4 px-4 text-body-small text-on-surface-variant",
189
+ "group-data-[invalid]:text-error"
190
+ ],
191
+ supportingText: "min-w-0"
192
+ },
193
+ variants: {
194
+ variant: {
195
+ filled: {
196
+ field: [
197
+ "overflow-hidden rounded-t-extra-small bg-surface-container-highest",
198
+ // M3 filled hover: state layer (on-surface × state-hover).
199
+ "before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none",
200
+ "before:transition-opacity before:duration-100",
201
+ "hover:before:opacity-[var(--md-sys-state-hover)]",
202
+ "data-[disabled]:before:opacity-0",
203
+ // M3 filled resting active-indicator: 1dp on-surface-variant.
204
+ "border-b border-on-surface-variant hover:border-on-surface",
205
+ // M3 filled focus-active-indicator-height is 3dp.
206
+ "data-[focused]:border-b-[3px] data-[focused]:border-primary",
207
+ "data-[popup-open]:border-b-[3px] data-[popup-open]:border-primary",
208
+ "data-[invalid]:border-error"
209
+ ],
210
+ value: "pt-3",
211
+ label: [
212
+ "group-data-[focused]/field:top-1.5 group-data-[focused]/field:translate-y-0 group-data-[focused]/field:text-body-small",
213
+ "group-data-[filled]/field:top-1.5 group-data-[filled]/field:translate-y-0 group-data-[filled]/field:text-body-small",
214
+ "group-data-[popup-open]/field:top-1.5 group-data-[popup-open]/field:translate-y-0 group-data-[popup-open]/field:text-body-small",
215
+ "group-data-[has-placeholder]/field:top-1.5 group-data-[has-placeholder]/field:translate-y-0 group-data-[has-placeholder]/field:text-body-small"
216
+ ]
217
+ },
218
+ outlined: {
219
+ field: [
220
+ "overflow-visible rounded-extra-small border border-outline hover:border-on-surface",
221
+ // M3 outlined focus-outline-width is 3dp; padding drops 2px so content
222
+ // stays steady as the 1dp border grows (matches the TextField anchor).
223
+ "data-[focused]:border-[3px] data-[focused]:border-primary data-[focused]:px-[14px]",
224
+ "data-[popup-open]:border-[3px] data-[popup-open]:border-primary data-[popup-open]:px-[14px]",
225
+ "data-[invalid]:border-error"
226
+ ],
227
+ label: [
228
+ "group-data-[focused]/field:top-0 group-data-[focused]/field:-translate-y-1/2 group-data-[focused]/field:z-[1] group-data-[focused]/field:text-body-small group-data-[focused]/field:bg-surface group-data-[focused]/field:px-1 group-data-[focused]/field:leading-none",
229
+ "group-data-[filled]/field:top-0 group-data-[filled]/field:-translate-y-1/2 group-data-[filled]/field:z-[1] group-data-[filled]/field:text-body-small group-data-[filled]/field:bg-surface group-data-[filled]/field:px-1 group-data-[filled]/field:leading-none",
230
+ "group-data-[popup-open]/field:top-0 group-data-[popup-open]/field:-translate-y-1/2 group-data-[popup-open]/field:z-[1] group-data-[popup-open]/field:text-body-small group-data-[popup-open]/field:bg-surface group-data-[popup-open]/field:px-1 group-data-[popup-open]/field:leading-none",
231
+ "group-data-[has-placeholder]/field:top-0 group-data-[has-placeholder]/field:-translate-y-1/2 group-data-[has-placeholder]/field:z-[1] group-data-[has-placeholder]/field:text-body-small group-data-[has-placeholder]/field:bg-surface group-data-[has-placeholder]/field:px-1 group-data-[has-placeholder]/field:leading-none"
232
+ ]
233
+ }
234
+ }
235
+ },
236
+ defaultVariants: {
237
+ variant: "outlined"
238
+ }
239
+ });
240
+ var s = selectTv();
241
+ var Select = createSelect(
242
+ {
243
+ trigger: s.trigger(),
244
+ value: s.value(),
245
+ icon: s.icon(),
246
+ popup: s.popup(),
247
+ item: s.item(),
248
+ itemIndicator: s.itemIndicator(),
249
+ groupLabel: s.groupLabel(),
250
+ scrollUpArrow: s.scrollUpArrow(),
251
+ scrollDownArrow: s.scrollDownArrow()
252
+ },
253
+ ({ variant }) => {
254
+ const f = selectFieldTv({ variant });
255
+ return {
256
+ root: f.root(),
257
+ field: f.field(),
258
+ inputWrap: f.inputWrap(),
259
+ value: f.value(),
260
+ label: f.label(),
261
+ icon: f.icon(),
262
+ leadingIcon: f.leadingIcon(),
263
+ supporting: f.supporting(),
264
+ supportingText: f.supportingText()
265
+ };
266
+ }
267
+ );
268
+
269
+ export { Select, selectFieldTv, selectTv };
270
+ //# sourceMappingURL=index.js.map
271
+ //# sourceMappingURL=index.js.map