@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,188 +0,0 @@
1
- import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
2
- import * as tailwind_variants from 'tailwind-variants';
3
- import { createDatePicker } from '@m3-baseui/core';
4
-
5
- declare const datePickerTv: tailwind_variants.TVReturnType<{
6
- [key: string]: {
7
- [key: string]: tailwind_variants.ClassValue | {
8
- input?: tailwind_variants.ClassValue;
9
- grid?: tailwind_variants.ClassValue;
10
- popup?: tailwind_variants.ClassValue;
11
- header?: tailwind_variants.ClassValue;
12
- weekday?: tailwind_variants.ClassValue;
13
- calendar?: tailwind_variants.ClassValue;
14
- navButton?: tailwind_variants.ClassValue;
15
- monthLabel?: tailwind_variants.ClassValue;
16
- weekdays?: tailwind_variants.ClassValue;
17
- day?: tailwind_variants.ClassValue;
18
- yearGrid?: tailwind_variants.ClassValue;
19
- yearButton?: tailwind_variants.ClassValue;
20
- field?: tailwind_variants.ClassValue;
21
- fieldIcon?: tailwind_variants.ClassValue;
22
- modalBackdrop?: tailwind_variants.ClassValue;
23
- modalPopup?: tailwind_variants.ClassValue;
24
- modalHeader?: tailwind_variants.ClassValue;
25
- modalHeadline?: tailwind_variants.ClassValue;
26
- modalActions?: tailwind_variants.ClassValue;
27
- };
28
- };
29
- } | {
30
- [x: string]: {
31
- [x: string]: tailwind_variants.ClassValue | {
32
- input?: tailwind_variants.ClassValue;
33
- grid?: tailwind_variants.ClassValue;
34
- popup?: tailwind_variants.ClassValue;
35
- header?: tailwind_variants.ClassValue;
36
- weekday?: tailwind_variants.ClassValue;
37
- calendar?: tailwind_variants.ClassValue;
38
- navButton?: tailwind_variants.ClassValue;
39
- monthLabel?: tailwind_variants.ClassValue;
40
- weekdays?: tailwind_variants.ClassValue;
41
- day?: tailwind_variants.ClassValue;
42
- yearGrid?: tailwind_variants.ClassValue;
43
- yearButton?: tailwind_variants.ClassValue;
44
- field?: tailwind_variants.ClassValue;
45
- fieldIcon?: tailwind_variants.ClassValue;
46
- modalBackdrop?: tailwind_variants.ClassValue;
47
- modalPopup?: tailwind_variants.ClassValue;
48
- modalHeader?: tailwind_variants.ClassValue;
49
- modalHeadline?: tailwind_variants.ClassValue;
50
- modalActions?: tailwind_variants.ClassValue;
51
- };
52
- };
53
- } | {}, {
54
- calendar: string[];
55
- header: string[];
56
- navButton: string[];
57
- monthLabel: string[];
58
- grid: string[];
59
- weekdays: string[];
60
- weekday: string[];
61
- day: string[];
62
- yearGrid: string[];
63
- yearButton: string[];
64
- field: string[];
65
- input: string[];
66
- fieldIcon: string[];
67
- popup: string[];
68
- modalBackdrop: string[];
69
- modalPopup: string[];
70
- modalHeader: string[];
71
- modalHeadline: string[];
72
- modalActions: string[];
73
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
74
- [key: string]: {
75
- [key: string]: tailwind_variants.ClassValue | {
76
- input?: tailwind_variants.ClassValue;
77
- grid?: tailwind_variants.ClassValue;
78
- popup?: tailwind_variants.ClassValue;
79
- header?: tailwind_variants.ClassValue;
80
- weekday?: tailwind_variants.ClassValue;
81
- calendar?: tailwind_variants.ClassValue;
82
- navButton?: tailwind_variants.ClassValue;
83
- monthLabel?: tailwind_variants.ClassValue;
84
- weekdays?: tailwind_variants.ClassValue;
85
- day?: tailwind_variants.ClassValue;
86
- yearGrid?: tailwind_variants.ClassValue;
87
- yearButton?: tailwind_variants.ClassValue;
88
- field?: tailwind_variants.ClassValue;
89
- fieldIcon?: tailwind_variants.ClassValue;
90
- modalBackdrop?: tailwind_variants.ClassValue;
91
- modalPopup?: tailwind_variants.ClassValue;
92
- modalHeader?: tailwind_variants.ClassValue;
93
- modalHeadline?: tailwind_variants.ClassValue;
94
- modalActions?: tailwind_variants.ClassValue;
95
- };
96
- };
97
- } | {}>, {
98
- [key: string]: {
99
- [key: string]: tailwind_variants.ClassValue | {
100
- input?: tailwind_variants.ClassValue;
101
- grid?: tailwind_variants.ClassValue;
102
- popup?: tailwind_variants.ClassValue;
103
- header?: tailwind_variants.ClassValue;
104
- weekday?: tailwind_variants.ClassValue;
105
- calendar?: tailwind_variants.ClassValue;
106
- navButton?: tailwind_variants.ClassValue;
107
- monthLabel?: tailwind_variants.ClassValue;
108
- weekdays?: tailwind_variants.ClassValue;
109
- day?: tailwind_variants.ClassValue;
110
- yearGrid?: tailwind_variants.ClassValue;
111
- yearButton?: tailwind_variants.ClassValue;
112
- field?: tailwind_variants.ClassValue;
113
- fieldIcon?: tailwind_variants.ClassValue;
114
- modalBackdrop?: tailwind_variants.ClassValue;
115
- modalPopup?: tailwind_variants.ClassValue;
116
- modalHeader?: tailwind_variants.ClassValue;
117
- modalHeadline?: tailwind_variants.ClassValue;
118
- modalActions?: tailwind_variants.ClassValue;
119
- };
120
- };
121
- } | {}, {
122
- calendar: string[];
123
- header: string[];
124
- navButton: string[];
125
- monthLabel: string[];
126
- grid: string[];
127
- weekdays: string[];
128
- weekday: string[];
129
- day: string[];
130
- yearGrid: string[];
131
- yearButton: string[];
132
- field: string[];
133
- input: string[];
134
- fieldIcon: string[];
135
- popup: string[];
136
- modalBackdrop: string[];
137
- modalPopup: string[];
138
- modalHeader: string[];
139
- modalHeadline: string[];
140
- modalActions: string[];
141
- }, tailwind_variants.TVReturnType<unknown, {
142
- calendar: string[];
143
- header: string[];
144
- navButton: string[];
145
- monthLabel: string[];
146
- grid: string[];
147
- weekdays: string[];
148
- weekday: string[];
149
- day: string[];
150
- yearGrid: string[];
151
- yearButton: string[];
152
- field: string[];
153
- input: string[];
154
- fieldIcon: string[];
155
- popup: string[];
156
- modalBackdrop: string[];
157
- modalPopup: string[];
158
- modalHeader: string[];
159
- modalHeadline: string[];
160
- modalActions: string[];
161
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
162
- [key: string]: {
163
- [key: string]: tailwind_variants.ClassValue | {
164
- input?: tailwind_variants.ClassValue;
165
- grid?: tailwind_variants.ClassValue;
166
- popup?: tailwind_variants.ClassValue;
167
- header?: tailwind_variants.ClassValue;
168
- weekday?: tailwind_variants.ClassValue;
169
- calendar?: tailwind_variants.ClassValue;
170
- navButton?: tailwind_variants.ClassValue;
171
- monthLabel?: tailwind_variants.ClassValue;
172
- weekdays?: tailwind_variants.ClassValue;
173
- day?: tailwind_variants.ClassValue;
174
- yearGrid?: tailwind_variants.ClassValue;
175
- yearButton?: tailwind_variants.ClassValue;
176
- field?: tailwind_variants.ClassValue;
177
- fieldIcon?: tailwind_variants.ClassValue;
178
- modalBackdrop?: tailwind_variants.ClassValue;
179
- modalPopup?: tailwind_variants.ClassValue;
180
- modalHeader?: tailwind_variants.ClassValue;
181
- modalHeadline?: tailwind_variants.ClassValue;
182
- modalActions?: tailwind_variants.ClassValue;
183
- };
184
- };
185
- } | {}>, unknown, unknown, undefined>>;
186
- declare const DatePicker: ReturnType<typeof createDatePicker>;
187
-
188
- export { DatePicker, datePickerTv };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/date-picker.ts"],"names":["baseTv"],"mappings":"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","file":"date-picker.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 * date-picker.ts — Tailwind classes for the M3 Date picker.\n *\n * The month-grid Calendar plus its two surfaces: a docked Popover\n * (surface-container-high, elevation 2, large corners) and a modal Dialog\n * (surface-container-high, elevation 3, extra-large corners). Day cells carry a\n * circular `before:` state layer keyed to hover; the selected day fills with\n * primary. Same DOM + ripple as the VE build.\n */\nimport { createDatePicker } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const datePickerTv = tv({\n slots: {\n calendar: ['w-[328px] max-w-full p-3 text-on-surface'],\n header: ['flex items-center justify-between gap-2 h-12 pl-3 pr-1'],\n navButton: [\n 'relative inline-flex items-center justify-center size-10 rounded-full overflow-hidden',\n 'text-on-surface-variant cursor-pointer outline-none [&>svg]:size-6',\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 'disabled:text-on-surface/[0.38] disabled:before:opacity-0 disabled:pointer-events-none',\n ],\n monthLabel: [\n 'relative inline-flex items-center gap-1 h-9 px-3 rounded-full overflow-hidden',\n 'text-label-large text-on-surface-variant cursor-pointer outline-none',\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 '[&>svg]:transition-transform data-[view=years]:[&>svg]:rotate-180',\n ],\n grid: ['mt-2 border-collapse', '[&_td]:p-0 [&_td]:text-center'],\n weekdays: [''],\n weekday: ['size-12 font-normal text-body-large text-on-surface-variant'],\n day: [\n 'relative inline-flex items-center justify-center size-12 rounded-full overflow-hidden',\n 'text-body-large text-on-surface cursor-pointer outline-none',\n 'before:absolute before:inset-0 before:rounded-full 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 // today: 1px primary outline ring\n 'data-[today]:ring-1 data-[today]:ring-inset data-[today]:ring-primary',\n // selected: primary fill, on-primary label, no state layer tint shift\n 'data-[selected]:bg-primary data-[selected]:text-on-primary',\n 'data-[disabled]:text-on-surface/[0.38] data-[disabled]:before:opacity-0 data-[disabled]:pointer-events-none',\n ],\n // weeks render as 7-col rows; force grid layout on each row\n yearGrid: ['grid grid-cols-3 gap-2 max-h-[280px] overflow-y-auto px-3 py-2'],\n yearButton: [\n 'relative inline-flex items-center justify-center h-9 rounded-full overflow-hidden',\n 'text-label-large text-on-surface-variant cursor-pointer outline-none',\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 'data-[selected]:bg-primary data-[selected]:text-on-primary',\n ],\n\n field: [\n 'inline-flex items-center gap-1 h-14 pl-4 pr-1 min-w-[200px]',\n 'bg-surface-container-highest text-on-surface rounded-t-extra-small',\n 'border-b border-on-surface-variant',\n ],\n input: [\n 'flex-1 min-w-0 h-full bg-transparent border-0 outline-none',\n 'text-body-large text-on-surface placeholder:text-on-surface-variant',\n ],\n fieldIcon: [\n 'relative inline-flex items-center justify-center size-10 rounded-full overflow-hidden',\n 'text-on-surface-variant cursor-pointer outline-none [&>svg]:size-6',\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 ],\n popup: [\n 'bg-surface-container-high text-on-surface rounded-large shadow-level2',\n 'origin-[var(--transform-origin)] transition-[opacity,transform] duration-150 ease-standard',\n 'data-[starting-style]:opacity-0 data-[starting-style]:scale-95',\n 'data-[ending-style]:opacity-0',\n 'focus:outline-none',\n ],\n\n modalBackdrop: [\n 'fixed inset-0 z-40 bg-scrim/32',\n 'transition-opacity duration-200 ease-standard',\n 'data-[starting-style]:opacity-0 data-[ending-style]:opacity-0',\n ],\n modalPopup: [\n 'fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2',\n 'w-[min(360px,calc(100vw-48px))] max-h-[calc(100vh-48px)] overflow-auto',\n 'bg-surface-container-high text-on-surface rounded-extra-large shadow-level3',\n 'flex flex-col',\n 'origin-[var(--transform-origin)] transition-[opacity,transform] duration-200 ease-emphasized',\n 'data-[starting-style]:opacity-0 data-[starting-style]:scale-95',\n 'data-[ending-style]:opacity-0 data-[ending-style]:scale-95',\n 'focus:outline-none',\n ],\n modalHeader: ['px-6 pt-4 text-label-medium text-on-surface-variant m-0'],\n modalHeadline: ['px-6 pt-1 pb-4 text-headline-large text-on-surface m-0'],\n modalActions: ['flex justify-end gap-2 px-6 pb-4 pt-2'],\n },\n});\n\nconst dp = datePickerTv();\nexport const DatePicker: ReturnType<typeof createDatePicker> = createDatePicker({\n calendar: dp.calendar(),\n header: dp.header(),\n navButton: dp.navButton(),\n monthLabel: dp.monthLabel(),\n grid: dp.grid(),\n weekdays: dp.weekdays(),\n weekday: dp.weekday(),\n day: dp.day(),\n yearGrid: dp.yearGrid(),\n yearButton: dp.yearButton(),\n field: dp.field(),\n input: dp.input(),\n fieldIcon: dp.fieldIcon(),\n popup: dp.popup(),\n modalBackdrop: dp.modalBackdrop(),\n modalPopup: dp.modalPopup(),\n modalHeader: dp.modalHeader(),\n modalHeadline: dp.modalHeadline(),\n modalActions: dp.modalActions(),\n});\n"]}
package/dist/dialog.d.ts DELETED
@@ -1,86 +0,0 @@
1
- import * as react from 'react';
2
- import * as _base_ui_react from '@base-ui/react';
3
- import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
4
- import * as tailwind_variants from 'tailwind-variants';
5
-
6
- declare const dialogTv: tailwind_variants.TVReturnType<{
7
- [key: string]: {
8
- [key: string]: tailwind_variants.ClassValue | {
9
- title?: tailwind_variants.ClassValue;
10
- close?: tailwind_variants.ClassValue;
11
- popup?: tailwind_variants.ClassValue;
12
- description?: tailwind_variants.ClassValue;
13
- backdrop?: tailwind_variants.ClassValue;
14
- };
15
- };
16
- } | {
17
- [x: string]: {
18
- [x: string]: tailwind_variants.ClassValue | {
19
- title?: tailwind_variants.ClassValue;
20
- close?: tailwind_variants.ClassValue;
21
- popup?: tailwind_variants.ClassValue;
22
- description?: tailwind_variants.ClassValue;
23
- backdrop?: tailwind_variants.ClassValue;
24
- };
25
- };
26
- } | {}, {
27
- backdrop: string[];
28
- popup: string[];
29
- title: string[];
30
- description: string[];
31
- close: string[];
32
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
33
- [key: string]: {
34
- [key: string]: tailwind_variants.ClassValue | {
35
- title?: tailwind_variants.ClassValue;
36
- close?: tailwind_variants.ClassValue;
37
- popup?: tailwind_variants.ClassValue;
38
- description?: tailwind_variants.ClassValue;
39
- backdrop?: tailwind_variants.ClassValue;
40
- };
41
- };
42
- } | {}>, {
43
- [key: string]: {
44
- [key: string]: tailwind_variants.ClassValue | {
45
- title?: tailwind_variants.ClassValue;
46
- close?: tailwind_variants.ClassValue;
47
- popup?: tailwind_variants.ClassValue;
48
- description?: tailwind_variants.ClassValue;
49
- backdrop?: tailwind_variants.ClassValue;
50
- };
51
- };
52
- } | {}, {
53
- backdrop: string[];
54
- popup: string[];
55
- title: string[];
56
- description: string[];
57
- close: string[];
58
- }, tailwind_variants.TVReturnType<unknown, {
59
- backdrop: string[];
60
- popup: string[];
61
- title: string[];
62
- description: string[];
63
- close: string[];
64
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
65
- [key: string]: {
66
- [key: string]: tailwind_variants.ClassValue | {
67
- title?: tailwind_variants.ClassValue;
68
- close?: tailwind_variants.ClassValue;
69
- popup?: tailwind_variants.ClassValue;
70
- description?: tailwind_variants.ClassValue;
71
- backdrop?: tailwind_variants.ClassValue;
72
- };
73
- };
74
- } | {}>, unknown, unknown, undefined>>;
75
- declare const Dialog: {
76
- Root: typeof _base_ui_react.DialogRoot;
77
- Trigger: _base_ui_react.DialogTrigger;
78
- Portal: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogPortalProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
79
- Backdrop: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.AlertDialogBackdropProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
80
- Popup: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.AlertDialogPopupProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
81
- Title: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.AlertDialogTitleProps, "ref"> & react.RefAttributes<HTMLHeadingElement>, "ref"> & react.RefAttributes<unknown>>;
82
- Description: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.AlertDialogDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>, "ref"> & react.RefAttributes<unknown>>;
83
- Close: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>, "ref"> & react.RefAttributes<unknown>>;
84
- };
85
-
86
- export { Dialog, dialogTv };
package/dist/dialog.js DELETED
@@ -1,68 +0,0 @@
1
- "use client";
2
- import { createDialog } from '@m3-baseui/core';
3
- import { tv as tv$1 } from 'tailwind-variants';
4
-
5
- // src/dialog.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/dialog.ts
35
- var dialogTv = tv({
36
- slots: {
37
- backdrop: [
38
- "fixed inset-0 z-40 bg-scrim/32",
39
- "transition-opacity duration-200 ease-standard",
40
- "data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"
41
- ],
42
- popup: [
43
- "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
44
- "w-[min(560px,calc(100vw-48px))] max-h-[calc(100vh-48px)] overflow-auto",
45
- "bg-surface-container-high text-on-surface rounded-extra-large shadow-level3",
46
- "p-6 flex flex-col gap-4",
47
- "origin-[var(--transform-origin)] transition-[opacity,transform] duration-200 ease-emphasized",
48
- "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
49
- "data-[ending-style]:opacity-0 data-[ending-style]:scale-95",
50
- "focus:outline-none"
51
- ],
52
- title: ["text-headline-small text-on-surface m-0"],
53
- description: ["text-body-medium text-on-surface-variant m-0"],
54
- close: ["inline-flex"]
55
- }
56
- });
57
- var d = dialogTv();
58
- var Dialog = createDialog({
59
- backdrop: d.backdrop(),
60
- popup: d.popup(),
61
- title: d.title(),
62
- description: d.description(),
63
- close: d.close()
64
- });
65
-
66
- export { Dialog, dialogTv };
67
- //# sourceMappingURL=dialog.js.map
68
- //# sourceMappingURL=dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/dialog.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;;;ACjCI,IAAM,WAAW,EAAA,CAAG;AAAA,EACzB,KAAA,EAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,gCAAA;AAAA,MACA,+CAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,+DAAA;AAAA,MACA,wEAAA;AAAA,MACA,6EAAA;AAAA,MACA,yBAAA;AAAA,MACA,8FAAA;AAAA,MACA,gEAAA;AAAA,MACA,4DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,CAAC,yCAAyC,CAAA;AAAA,IACjD,WAAA,EAAa,CAAC,8CAA8C,CAAA;AAAA,IAC5D,KAAA,EAAO,CAAC,aAAa;AAAA;AAEzB,CAAC;AAED,IAAM,IAAI,QAAA,EAAS;AACZ,IAAM,SAAS,YAAA,CAAa;AAAA,EACjC,QAAA,EAAU,EAAE,QAAA,EAAS;AAAA,EACrB,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,EACf,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,EACf,WAAA,EAAa,EAAE,WAAA,EAAY;AAAA,EAC3B,KAAA,EAAO,EAAE,KAAA;AACX,CAAC","file":"dialog.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 * dialog.ts — Tailwind classes for the M3 basic Dialog.\n *\n * Scrim backdrop + centered surface-container-high popup (extra-large corners,\n * elevation 3) with an emphasized fade/scale transition off Base UI's\n * data-[starting-style] / data-[ending-style] attributes.\n */\nimport { createDialog } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const dialogTv = tv({\n slots: {\n backdrop: [\n 'fixed inset-0 z-40 bg-scrim/32',\n 'transition-opacity duration-200 ease-standard',\n 'data-[starting-style]:opacity-0 data-[ending-style]:opacity-0',\n ],\n popup: [\n 'fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2',\n 'w-[min(560px,calc(100vw-48px))] max-h-[calc(100vh-48px)] overflow-auto',\n 'bg-surface-container-high text-on-surface rounded-extra-large shadow-level3',\n 'p-6 flex flex-col gap-4',\n 'origin-[var(--transform-origin)] transition-[opacity,transform] duration-200 ease-emphasized',\n 'data-[starting-style]:opacity-0 data-[starting-style]:scale-95',\n 'data-[ending-style]:opacity-0 data-[ending-style]:scale-95',\n 'focus:outline-none',\n ],\n title: ['text-headline-small text-on-surface m-0'],\n description: ['text-body-medium text-on-surface-variant m-0'],\n close: ['inline-flex'],\n },\n});\n\nconst d = dialogTv();\nexport const Dialog = createDialog({\n backdrop: d.backdrop(),\n popup: d.popup(),\n title: d.title(),\n description: d.description(),\n close: d.close(),\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/divider.ts"],"names":[],"mappings":";;;;;AAWO,IAAM,YAAY,EAAA,CAAG;AAAA,EAC1B,IAAA,EAAM,mDAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,WAAA,EAAa;AAAA,MACX,UAAA,EAAY,aAAA;AAAA,MACZ,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,EAAE,WAAA,EAAa,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,OAAO,MAAA,EAAO;AAAA,IAC3D,EAAE,WAAA,EAAa,YAAA,EAAc,KAAA,EAAO,QAAA,EAAU,OAAO,MAAA,EAAO;AAAA;AAAA,IAE5D,EAAE,WAAA,EAAa,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,OAAO,2BAAA,EAA4B;AAAA,IAC9E,EAAE,WAAA,EAAa,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,OAAO,MAAA;AAAO,GAC5D;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,OAAA,GAAU,aAAA,CAAc,CAAC,EAAE,KAAA,EAAO,WAAA,EAAY,KAAM,SAAA,CAAU,EAAE,KAAA,EAAO,WAAA,EAAa,CAAC","file":"divider.js","sourcesContent":["/**\n * divider.ts — tailwind-variants for the M3 Divider.\n *\n * 1dp `outline-variant` rule. `self-stretch` fills the cross axis in flex\n * layouts; horizontal is 1dp tall, vertical 1dp wide. The inset variants add a\n * 16dp leading (`inset`) or both-ends (`middle`) margin along the main axis.\n * Same DOM + `role=\"separator\"` as the VE build.\n */\nimport { createDivider } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\nexport const dividerTv = tv({\n base: 'shrink-0 self-stretch border-0 bg-outline-variant',\n variants: {\n orientation: {\n horizontal: 'h-px w-auto',\n vertical: 'w-px h-auto',\n },\n inset: {\n full: '',\n inset: '',\n middle: '',\n },\n },\n compoundVariants: [\n { orientation: 'horizontal', inset: 'inset', class: 'ms-4' },\n { orientation: 'horizontal', inset: 'middle', class: 'mx-4' },\n // Logical block-start margin mirrors the VE recipe's `marginBlockStart`.\n { orientation: 'vertical', inset: 'inset', class: '[margin-block-start:1rem]' },\n { orientation: 'vertical', inset: 'middle', class: 'my-4' },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n inset: 'full',\n },\n});\n\nexport const Divider = createDivider(({ inset, orientation }) => dividerTv({ inset, orientation }));\nexport type { DividerProps, DividerInset, DividerOrientation } from '@m3-baseui/core';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/fab.ts","../src/fab-menu.ts"],"names":["baseTv","tv"],"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;ACjCI,IAAM,QAAQC,IAAAA,CAAG;AAAA,EACtB,IAAA,EAAM;AAAA,IACJ,6EAAA;AAAA,IACA,kDAAA;AAAA,IACA,mCAAA;AAAA,IACA,8CAAA;AAAA,IACA,4IAAA;AAAA,IACA,kDAAA;AAAA,IACA,0DAAA;AAAA,IACA,qDAAA;AAAA,IACA,6DAAA;AAAA;AAAA;AAAA,IAGA,6EAAA;AAAA,IACA,uDAAA;AAAA,IACA,kGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,uCAAA;AAAA,MACP,OAAA,EAAS,sCAAA;AAAA,MACT,KAAA,EAAO,4CAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,wCAAA;AAAA,MACT,OAAA,EAAS,gDAAA;AAAA,MACT,SAAA,EAAW,oDAAA;AAAA,MACX,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEkB,SAAA,CAAU,CAAC,EAAE,IAAA,EAAM,KAAA,EAAM,KAAM,KAAA,CAAM,EAAE,IAAA,EAAM,KAAA,EAAO,CAAC;;;ACnCjE,IAAM,YAAY,EAAA,CAAG;AAAA,EAC1B,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,2DAAA;AAAA,MACA,4FAAA;AAAA,MACA,gEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,8EAAA;AAAA,MACA,uEAAA;AAAA,MACA,gFAAA;AAAA,MACA,4IAAA;AAAA,MACA,kDAAA;AAAA,MACA,+DAAA;AAAA,MACA,qDAAA;AAAA;AAAA,MAEA,0FAAA;AAAA;AAAA;AAAA,MAGA,kGAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,EAAE,IAAA,EAAM,wCAAA,EAAyC;AAAA,MAC1D,OAAA,EAAS,EAAE,IAAA,EAAM,gDAAA,EAAiD;AAAA,MAClE,SAAA,EAAW,EAAE,IAAA,EAAM,oDAAA,EAAqD;AAAA,MACxE,QAAA,EAAU,EAAE,IAAA,EAAM,kDAAA;AAAmD;AACvE,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,OAAA,GAAU,aAAA,CAAc,CAAC,EAAE,IAAA,EAAM,KAAA,EAAM,KAAM,KAAA,CAAM,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA,EAAG;AAAA,EAChF,KAAA,EAAO,SAAA,EAAU,CAAE,KAAA,EAAM;AAAA,EACzB,IAAA,EAAM,CAAC,KAAA,KAAU,SAAA,CAAU,EAAE,KAAA,EAAO,EAAE,IAAA;AACxC,CAAC","file":"fab-menu.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 * fab.ts — tailwind-variants for the M3 FAB.\n *\n * Four sizes + four container colors, elevation level3 (level4 on hover) and a\n * currentColor state-layer `::before`. The pointer ripple is added by the\n * factory. Same DOM as the VE build.\n */\nimport { createFab } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\nexport const fabTv = tv({\n base: [\n 'relative inline-flex items-center justify-center box-border overflow-hidden',\n 'border-0 cursor-pointer select-none outline-none',\n 'shadow-level3 hover:shadow-level4',\n 'transition-shadow 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]:before:opacity-[var(--md-sys-state-pressed)]',\n // M3 discourages disabled FABs (material-web removed the state). When native\n // disabled is used, apply the same container/label tokens as filled buttons.\n 'disabled:pointer-events-none disabled:shadow-none disabled:before:opacity-0',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:pointer-events-none data-[disabled]:shadow-none data-[disabled]:before:opacity-0',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n variants: {\n size: {\n small: 'size-10 rounded-medium [&_svg]:size-6',\n regular: 'size-14 rounded-large [&_svg]:size-6',\n large: 'size-24 rounded-extra-large [&_svg]:size-9',\n extended: 'h-14 min-w-20 px-4 gap-3 rounded-large text-label-large [&_svg]:size-6',\n },\n color: {\n surface: 'bg-surface-container-high text-primary',\n primary: 'bg-primary-container text-on-primary-container',\n secondary: 'bg-secondary-container text-on-secondary-container',\n tertiary: 'bg-tertiary-container text-on-tertiary-container',\n },\n },\n defaultVariants: {\n size: 'regular',\n color: 'surface',\n },\n});\n\nexport const Fab = createFab(({ size, color }) => fabTv({ size, color }));\nexport type { FabProps, FabSize, FabColor } from '@m3-baseui/core';\n","/**\n * fab-menu.ts — tailwind-variants for the M3 FAB menu.\n *\n * The popup stacks the actions in a right-aligned column with the M3 menu\n * enter/exit motion; each item is a 56dp full-corner pill (elevation level3,\n * level4 on hover) with a currentColor state-layer `::before`, a 24dp leading\n * icon slot and a label-large label. The trigger reuses the FAB resolver. Same\n * DOM + ripple as the VE build.\n */\nimport { createFabMenu } from '@m3-baseui/core';\nimport { tv } from './tv';\nimport { fabTv } from './fab';\n\nexport const fabMenuTv = tv({\n slots: {\n popup: [\n 'flex flex-col items-end gap-2 bg-transparent outline-none',\n 'origin-[var(--transform-origin)] transition-[opacity,transform] duration-150 ease-standard',\n 'data-[starting-style]:opacity-0 data-[starting-style]:scale-95',\n 'data-[ending-style]:opacity-0',\n ],\n item: [\n 'relative inline-flex items-center gap-3 h-14 px-4 overflow-hidden box-border',\n 'cursor-pointer select-none outline-none rounded-full text-label-large',\n 'shadow-level3 hover:shadow-level4 transition-shadow 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 'data-[highlighted]:before:opacity-[var(--md-sys-state-hover)]',\n 'active:before:opacity-[var(--md-sys-state-pressed)]',\n // M3 leading icon (24dp).\n '[&_[data-slot=fab-menu-leading]]:inline-flex [&_[data-slot=fab-menu-leading]>svg]:size-6',\n // M3 discourages disabled FABs; when used, match the filled-button tokens\n // (per-token, not a blanket opacity) and suppress the state layer.\n 'data-[disabled]:pointer-events-none data-[disabled]:shadow-none data-[disabled]:before:opacity-0',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n },\n variants: {\n color: {\n surface: { item: 'bg-surface-container-high text-primary' },\n primary: { item: 'bg-primary-container text-on-primary-container' },\n secondary: { item: 'bg-secondary-container text-on-secondary-container' },\n tertiary: { item: 'bg-tertiary-container text-on-tertiary-container' },\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n});\n\nexport const FabMenu = createFabMenu(({ size, color }) => fabTv({ size, color }), {\n popup: fabMenuTv().popup(),\n item: (color) => fabMenuTv({ color }).item(),\n});\n\nexport type { FabMenuTriggerProps, FabMenuItemProps } from '@m3-baseui/core';\n"]}
package/dist/fab.js DELETED
@@ -1,47 +0,0 @@
1
- "use client";
2
- import { createFab } from '@m3-baseui/core';
3
- import { tv } from 'tailwind-variants';
4
-
5
- // src/fab.ts
6
- var fabTv = tv({
7
- base: [
8
- "relative inline-flex items-center justify-center box-border overflow-hidden",
9
- "border-0 cursor-pointer select-none outline-none",
10
- "shadow-level3 hover:shadow-level4",
11
- "transition-shadow duration-150 ease-standard",
12
- "before:absolute before:inset-0 before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100",
13
- "hover:before:opacity-[var(--md-sys-state-hover)]",
14
- "focus-visible:before:opacity-[var(--md-sys-state-focus)]",
15
- "active:before:opacity-[var(--md-sys-state-pressed)]",
16
- "data-[pressed]:before:opacity-[var(--md-sys-state-pressed)]",
17
- // M3 discourages disabled FABs (material-web removed the state). When native
18
- // disabled is used, apply the same container/label tokens as filled buttons.
19
- "disabled:pointer-events-none disabled:shadow-none disabled:before:opacity-0",
20
- "disabled:bg-on-surface/12 disabled:text-on-surface/38",
21
- "data-[disabled]:pointer-events-none data-[disabled]:shadow-none data-[disabled]:before:opacity-0",
22
- "data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38"
23
- ],
24
- variants: {
25
- size: {
26
- small: "size-10 rounded-medium [&_svg]:size-6",
27
- regular: "size-14 rounded-large [&_svg]:size-6",
28
- large: "size-24 rounded-extra-large [&_svg]:size-9",
29
- extended: "h-14 min-w-20 px-4 gap-3 rounded-large text-label-large [&_svg]:size-6"
30
- },
31
- color: {
32
- surface: "bg-surface-container-high text-primary",
33
- primary: "bg-primary-container text-on-primary-container",
34
- secondary: "bg-secondary-container text-on-secondary-container",
35
- tertiary: "bg-tertiary-container text-on-tertiary-container"
36
- }
37
- },
38
- defaultVariants: {
39
- size: "regular",
40
- color: "surface"
41
- }
42
- });
43
- var Fab = createFab(({ size, color }) => fabTv({ size, color }));
44
-
45
- export { Fab, fabTv };
46
- //# sourceMappingURL=fab.js.map
47
- //# sourceMappingURL=fab.js.map
package/dist/fab.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/fab.ts"],"names":[],"mappings":";;;;;AAUO,IAAM,QAAQ,EAAA,CAAG;AAAA,EACtB,IAAA,EAAM;AAAA,IACJ,6EAAA;AAAA,IACA,kDAAA;AAAA,IACA,mCAAA;AAAA,IACA,8CAAA;AAAA,IACA,4IAAA;AAAA,IACA,kDAAA;AAAA,IACA,0DAAA;AAAA,IACA,qDAAA;AAAA,IACA,6DAAA;AAAA;AAAA;AAAA,IAGA,6EAAA;AAAA,IACA,uDAAA;AAAA,IACA,kGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,uCAAA;AAAA,MACP,OAAA,EAAS,sCAAA;AAAA,MACT,KAAA,EAAO,4CAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,wCAAA;AAAA,MACT,OAAA,EAAS,gDAAA;AAAA,MACT,SAAA,EAAW,oDAAA;AAAA,MACX,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC;AAEM,IAAM,GAAA,GAAM,SAAA,CAAU,CAAC,EAAE,IAAA,EAAM,KAAA,EAAM,KAAM,KAAA,CAAM,EAAE,IAAA,EAAM,KAAA,EAAO,CAAC","file":"fab.js","sourcesContent":["/**\n * fab.ts — tailwind-variants for the M3 FAB.\n *\n * Four sizes + four container colors, elevation level3 (level4 on hover) and a\n * currentColor state-layer `::before`. The pointer ripple is added by the\n * factory. Same DOM as the VE build.\n */\nimport { createFab } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\nexport const fabTv = tv({\n base: [\n 'relative inline-flex items-center justify-center box-border overflow-hidden',\n 'border-0 cursor-pointer select-none outline-none',\n 'shadow-level3 hover:shadow-level4',\n 'transition-shadow 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]:before:opacity-[var(--md-sys-state-pressed)]',\n // M3 discourages disabled FABs (material-web removed the state). When native\n // disabled is used, apply the same container/label tokens as filled buttons.\n 'disabled:pointer-events-none disabled:shadow-none disabled:before:opacity-0',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:pointer-events-none data-[disabled]:shadow-none data-[disabled]:before:opacity-0',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n variants: {\n size: {\n small: 'size-10 rounded-medium [&_svg]:size-6',\n regular: 'size-14 rounded-large [&_svg]:size-6',\n large: 'size-24 rounded-extra-large [&_svg]:size-9',\n extended: 'h-14 min-w-20 px-4 gap-3 rounded-large text-label-large [&_svg]:size-6',\n },\n color: {\n surface: 'bg-surface-container-high text-primary',\n primary: 'bg-primary-container text-on-primary-container',\n secondary: 'bg-secondary-container text-on-secondary-container',\n tertiary: 'bg-tertiary-container text-on-tertiary-container',\n },\n },\n defaultVariants: {\n size: 'regular',\n color: 'surface',\n },\n});\n\nexport const Fab = createFab(({ size, color }) => fabTv({ size, color }));\nexport type { FabProps, FabSize, FabColor } from '@m3-baseui/core';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/icon-button.ts"],"names":[],"mappings":"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","file":"icon-button.js","sourcesContent":["/**\n * icon-button.ts — tailwind-variants resolver for the M3 Icon Button.\n *\n * 40×40 circular target with a centered icon. The `selected` variant supports\n * toggle icon buttons; when `selected` is undefined the variant's default\n * (filled/active) look is used. Emits the same DOM + ripple as the VE build.\n */\nimport { createIconButton } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\n// M3 Expressive container widths (px) per size × width. Tailwind v4's dynamic\n// spacing scale resolves any integer (e.g. w-13 = 52px, w-46 = 184px).\nconst WIDTHS = {\n xs: { narrow: 'w-7', default: 'w-8', wide: 'w-10' }, // 28 / 32 / 40\n s: { narrow: 'w-8', default: 'w-10', wide: 'w-13' }, // 32 / 40 / 52\n m: { narrow: 'w-12', default: 'w-14', wide: 'w-18' }, // 48 / 56 / 72\n l: { narrow: 'w-16', default: 'w-24', wide: 'w-32' }, // 64 / 96 / 128\n xl: { narrow: 'w-26', default: 'w-34', wide: 'w-46' }, // 104 / 136 / 184\n} as const;\n\nconst widthCompounds = Object.entries(WIDTHS).flatMap(([size, w]) =>\n Object.entries(w).map(([width, klass]) => ({\n size: size as keyof typeof WIDTHS,\n width: width as 'narrow' | 'default' | 'wide',\n class: klass,\n })),\n);\n\nexport const iconButton = tv({\n base: [\n 'relative inline-flex items-center justify-center shrink-0',\n // No `overflow-hidden`: it would clip the 48dp touch target on small sizes.\n // The state layer is already rounded (before:rounded-[inherit]); the ripple\n // self-clips.\n 'rounded-full cursor-pointer select-none border-0 bg-transparent',\n 'transition-[box-shadow,background-color,color] duration-200 ease-standard',\n // State layer overlay\n 'before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none',\n '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]:before:opacity-[var(--md-sys-state-pressed)]',\n // Focus ring (M3: 3px secondary, 2px offset)\n 'focus-visible:outline-[3px] focus-visible:outline-offset-2 focus-visible:outline-secondary',\n // Disabled: no interaction, no state layer. Per-variant disabled colors\n // (container on-surface/12, icon on-surface/38) live on each variant.\n 'disabled:pointer-events-none disabled:before:opacity-0',\n 'data-[disabled]:pointer-events-none data-[disabled]:before:opacity-0',\n ],\n variants: {\n // Disabled icon is on-surface/38 for every variant; filled/tonal disabled\n // container is on-surface/12; outlined disabled outline is on-surface/12\n // (material-web parity).\n variant: {\n standard: [\n 'text-on-surface-variant',\n 'disabled:text-on-surface/38 data-[disabled]:text-on-surface/38',\n ],\n filled: [\n 'bg-primary text-on-primary',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n tonal: [\n 'bg-secondary-container text-on-secondary-container',\n 'disabled:bg-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n outlined: [\n 'border border-outline text-on-surface-variant',\n 'disabled:border-on-surface/12 disabled:text-on-surface/38',\n 'data-[disabled]:border-on-surface/12 data-[disabled]:text-on-surface/38',\n ],\n },\n selected: {\n true: '',\n false: '',\n },\n // Container height + icon size per M3 Expressive size. Width comes from the\n // (size, width) compound variants below.\n size: {\n xs: 'h-8 [&>svg]:size-5',\n s: 'h-10 [&>svg]:size-6',\n m: 'h-14 [&>svg]:size-6',\n l: 'h-24 [&>svg]:size-8',\n xl: 'h-[136px] [&>svg]:size-10',\n },\n width: {\n narrow: '',\n default: '',\n wide: '',\n },\n },\n compoundVariants: [\n ...widthCompounds,\n { variant: 'standard', selected: true, class: 'text-primary' },\n { variant: 'filled', selected: false, class: 'bg-surface-container-highest text-primary' },\n {\n variant: 'tonal',\n selected: false,\n class: 'bg-surface-container-highest text-on-surface-variant',\n },\n {\n variant: 'outlined',\n selected: true,\n class: [\n 'bg-inverse-surface text-inverse-on-surface border-transparent',\n // M3 disabled + selected: faint on-surface/12 container, no outline\n // (icon falls back to on-surface/38 from the variant). NOT transparent.\n 'disabled:bg-on-surface/12 disabled:border-transparent',\n 'data-[disabled]:bg-on-surface/12 data-[disabled]:border-transparent',\n ],\n },\n ],\n defaultVariants: {\n variant: 'standard',\n size: 's',\n width: 'default',\n },\n});\n\nexport const IconButton = createIconButton(({ variant, selected, size, width }) =>\n iconButton({ variant, selected, size, width }),\n);\nexport type { IconButtonProps, IconButtonVariant } from '@m3-baseui/core';\n"]}
package/dist/item.d.ts DELETED
@@ -1,94 +0,0 @@
1
- import * as react from 'react';
2
- import * as _m3_baseui_core from '@m3-baseui/core';
3
- export { ItemProps } from '@m3-baseui/core';
4
- import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
5
- import * as tailwind_variants from 'tailwind-variants';
6
-
7
- declare const itemTv: tailwind_variants.TVReturnType<{
8
- [key: string]: {
9
- [key: string]: tailwind_variants.ClassValue | {
10
- root?: tailwind_variants.ClassValue;
11
- content?: tailwind_variants.ClassValue;
12
- leading?: tailwind_variants.ClassValue;
13
- trailing?: tailwind_variants.ClassValue;
14
- overline?: tailwind_variants.ClassValue;
15
- supporting?: tailwind_variants.ClassValue;
16
- headline?: tailwind_variants.ClassValue;
17
- };
18
- };
19
- } | {
20
- [x: string]: {
21
- [x: string]: tailwind_variants.ClassValue | {
22
- root?: tailwind_variants.ClassValue;
23
- content?: tailwind_variants.ClassValue;
24
- leading?: tailwind_variants.ClassValue;
25
- trailing?: tailwind_variants.ClassValue;
26
- overline?: tailwind_variants.ClassValue;
27
- supporting?: tailwind_variants.ClassValue;
28
- headline?: tailwind_variants.ClassValue;
29
- };
30
- };
31
- } | {}, {
32
- root: string[];
33
- leading: string;
34
- content: string;
35
- overline: string;
36
- headline: string;
37
- supporting: string;
38
- trailing: string;
39
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
40
- [key: string]: {
41
- [key: string]: tailwind_variants.ClassValue | {
42
- root?: tailwind_variants.ClassValue;
43
- content?: tailwind_variants.ClassValue;
44
- leading?: tailwind_variants.ClassValue;
45
- trailing?: tailwind_variants.ClassValue;
46
- overline?: tailwind_variants.ClassValue;
47
- supporting?: tailwind_variants.ClassValue;
48
- headline?: tailwind_variants.ClassValue;
49
- };
50
- };
51
- } | {}>, {
52
- [key: string]: {
53
- [key: string]: tailwind_variants.ClassValue | {
54
- root?: tailwind_variants.ClassValue;
55
- content?: tailwind_variants.ClassValue;
56
- leading?: tailwind_variants.ClassValue;
57
- trailing?: tailwind_variants.ClassValue;
58
- overline?: tailwind_variants.ClassValue;
59
- supporting?: tailwind_variants.ClassValue;
60
- headline?: tailwind_variants.ClassValue;
61
- };
62
- };
63
- } | {}, {
64
- root: string[];
65
- leading: string;
66
- content: string;
67
- overline: string;
68
- headline: string;
69
- supporting: string;
70
- trailing: string;
71
- }, tailwind_variants.TVReturnType<unknown, {
72
- root: string[];
73
- leading: string;
74
- content: string;
75
- overline: string;
76
- headline: string;
77
- supporting: string;
78
- trailing: string;
79
- }, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
80
- [key: string]: {
81
- [key: string]: tailwind_variants.ClassValue | {
82
- root?: tailwind_variants.ClassValue;
83
- content?: tailwind_variants.ClassValue;
84
- leading?: tailwind_variants.ClassValue;
85
- trailing?: tailwind_variants.ClassValue;
86
- overline?: tailwind_variants.ClassValue;
87
- supporting?: tailwind_variants.ClassValue;
88
- headline?: tailwind_variants.ClassValue;
89
- };
90
- };
91
- } | {}>, unknown, unknown, undefined>>;
92
- declare const Item: react.ForwardRefExoticComponent<_m3_baseui_core.ItemOwnProps & react.HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
93
-
94
- export { Item, itemTv };
package/dist/item.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/item.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;;;AChCI,IAAM,SAAS,EAAA,CAAG;AAAA,EACvB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,iFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,kFAAA;AAAA,IACT,OAAA,EAAS,8BAAA;AAAA,IACT,QAAA,EAAU,0CAAA;AAAA,IACV,QAAA,EAAU,iCAAA;AAAA,IACV,UAAA,EAAY,0CAAA;AAAA,IACZ,QAAA,EAAU;AAAA;AAEd,CAAC;AAED,IAAM,IAAI,MAAA,EAAO;AACV,IAAM,OAAO,UAAA,CAAW;AAAA,EAC7B,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,EACb,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,EACnB,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,EACnB,QAAA,EAAU,EAAE,QAAA,EAAS;AAAA,EACrB,QAAA,EAAU,EAAE,QAAA,EAAS;AAAA,EACrB,UAAA,EAAY,EAAE,UAAA,EAAW;AAAA,EACzB,QAAA,EAAU,EAAE,QAAA;AACd,CAAC","file":"item.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 * item.ts — tailwind-variants slots for the M3 Item row primitive.\n *\n * The shared row layout: leading slot, overline/headline/supporting column and\n * trailing slot. Headline is `body-large`/`on-surface`, overline `label-small`,\n * supporting `body-medium`, leading/trailing `on-surface-variant`. Inert by\n * design — interactive surfaces wrap it. Same DOM as the VE build.\n */\nimport { createItem } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const itemTv = tv({\n slots: {\n root: [\n 'relative flex w-full items-center gap-4 box-border px-4 py-3 min-h-14 text-left',\n 'bg-transparent text-on-surface',\n ],\n leading: 'flex items-center justify-center shrink-0 text-on-surface-variant [&_svg]:size-6',\n content: 'flex flex-col min-w-0 flex-1',\n overline: 'text-label-small text-on-surface-variant',\n headline: 'text-body-large text-on-surface',\n supporting: 'text-body-medium text-on-surface-variant',\n trailing: 'flex items-center shrink-0 text-label-small text-on-surface-variant [&_svg]:size-6',\n },\n});\n\nconst s = itemTv();\nexport const Item = createItem({\n root: s.root(),\n leading: s.leading(),\n content: s.content(),\n overline: s.overline(),\n headline: s.headline(),\n supporting: s.supporting(),\n trailing: s.trailing(),\n});\nexport type { ItemProps } from '@m3-baseui/core';\n"]}
package/dist/list.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/list.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;;;AC9BI,IAAM,SAAS,EAAA,CAAG;AAAA,EACvB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,wCAAA;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,yEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,kFAAA;AAAA,IACT,OAAA,EAAS,8BAAA;AAAA,IACT,QAAA,EAAU,0EAAA;AAAA,IACV,UAAA,EAAY,mFAAA;AAAA,IACZ,QAAA,EAAU;AAAA,MACR,oFAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,CAAA,EAAG,EAAE,IAAA,EAAM,eAAA,EAAgB;AAAA,MAC3B,CAAA,EAAG,EAAE,IAAA,EAAM,mBAAA,EAAoB;AAAA,MAC/B,CAAA,EAAG,EAAE,IAAA,EAAM,+BAAA;AAAgC,KAC7C;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM;AAAA,UACJ,yDAAA;AAAA,UACA,4IAAA;AAAA,UACA,kDAAA;AAAA,UACA,0DAAA;AAAA,UACA,qDAAA;AAAA,UACA,sEAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,OAAO;AAAC;AACV,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO,CAAA;AAAA,IACP,WAAA,EAAa;AAAA;AAEjB,CAAC;AAEM,IAAM,OAAO,UAAA,CAAW;AAAA,EAC7B,IAAA,EAAM,MAAA,EAAO,CAAE,IAAA,EAAK;AAAA,EACpB,IAAA,EAAM,CAAC,EAAE,KAAA,EAAO,aAAY,KAAM;AAChC,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,EAAE,KAAA,EAAO,aAAa,CAAA;AACvC,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,MACb,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,MACnB,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,MACnB,QAAA,EAAU,EAAE,QAAA,EAAS;AAAA,MACrB,UAAA,EAAY,EAAE,UAAA,EAAW;AAAA,MACzB,QAAA,EAAU,EAAE,QAAA;AAAS,KACvB;AAAA,EACF;AACF,CAAC","file":"list.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 * list.ts — tailwind-variants slots for the M3 List.\n *\n * `surface` container with 8dp block padding; rows are 56/72/88dp for\n * one/two/three-line. Interactive rows get a `currentColor` state-layer\n * `::before` (the pointer ripple is added by the factory) and dim per-token when\n * `data-disabled`. Headline is `body-large`/`on-surface`, supporting\n * `body-medium`/`on-surface-variant`, leading/trailing `on-surface-variant`.\n * Same DOM as the VE build.\n */\nimport { createList } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const listTv = tv({\n slots: {\n root: 'list-none m-0 px-0 py-2 bg-transparent',\n item: [\n 'group relative flex w-full items-center gap-4 box-border px-4 text-left',\n 'bg-transparent border-0 text-on-surface no-underline',\n ],\n leading: 'flex items-center justify-center shrink-0 text-on-surface-variant [&_svg]:size-6',\n content: 'flex flex-col min-w-0 flex-1',\n headline: 'text-body-large text-on-surface group-data-[disabled]:text-on-surface/38',\n supporting: 'text-body-medium text-on-surface-variant group-data-[disabled]:text-on-surface/38',\n trailing: [\n 'flex items-center shrink-0 text-label-small text-on-surface-variant [&_svg]:size-6',\n 'group-data-[disabled]:text-on-surface/38',\n ],\n },\n variants: {\n lines: {\n 1: { item: 'min-h-14 py-2' },\n 2: { item: 'min-h-[72px] py-2' },\n 3: { item: 'min-h-[88px] items-start py-3' },\n },\n interactive: {\n true: {\n item: [\n 'cursor-pointer select-none overflow-hidden outline-none',\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-[disabled]:pointer-events-none data-[disabled]:before:opacity-0',\n 'disabled:pointer-events-none disabled:before:opacity-0',\n ],\n },\n false: {},\n },\n },\n defaultVariants: {\n lines: 1,\n interactive: false,\n },\n});\n\nexport const List = createList({\n root: listTv().root(),\n item: ({ lines, interactive }) => {\n const c = listTv({ lines, interactive });\n return {\n item: c.item(),\n leading: c.leading(),\n content: c.content(),\n headline: c.headline(),\n supporting: c.supporting(),\n trailing: c.trailing(),\n };\n },\n});\nexport type { ListItemProps, ListItemLines } from '@m3-baseui/core';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tv.ts","../src/loading-indicator.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,qBAAqB,EAAA,CAAG;AAAA,EACnC,KAAA,EAAO;AAAA;AAAA;AAAA,IAGL,IAAA,EAAM,2EAAA;AAAA,IACN,SAAA,EAAW;AAAA,MACT,cAAA;AAAA;AAAA,MAEA;AAAA;AACF,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,EAAE,IAAA,EAAM,6CAAA,EAA8C;AAAA,MAC5D,OAAO;AAAC;AACV,GACF;AAAA,EACA,eAAA,EAAiB,EAAE,SAAA,EAAW,KAAA;AAChC,CAAC;AAEM,IAAM,gBAAA,GAAmB,sBAAA,CAAuB,CAAC,EAAE,WAAU,KAAM;AACxE,EAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,EAAE,SAAA,EAAW,CAAA;AAC1C,EAAA,OAAO,EAAE,MAAM,CAAA,CAAE,IAAA,IAAQ,SAAA,EAAW,CAAA,CAAE,WAAU,EAAE;AACpD,CAAC","file":"loading-indicator.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 * loading-indicator.ts — tailwind-variants slots for the M3 Expressive Loading\n * indicator.\n *\n * A 48dp box holding the morphing `primary` shape; the rotate+scale morph keys\n * off the `m3-loading` keyframe (see preset.css) and always runs (indeterminate\n * only). `contained` puts the shape on a `secondary-container` pill. Same DOM as\n * the VE build.\n */\nimport { createLoadingIndicator } from '@m3-baseui/core';\nimport { tv } from './tv';\n\nexport const loadingIndicatorTv = tv({\n slots: {\n // The SVG is a fixed 38dp active indicator. Uncontained: the box shrinks to\n // the shape. Contained: a 48dp pill wraps it (5dp inset on each side).\n root: 'inline-flex items-center justify-center [&_svg]:block [&_svg]:size-[38px]',\n indicator: [\n 'fill-primary',\n // Morph + rotate about the shape's own centre (transform-box: fill-box).\n '[transform-box:fill-box] origin-center animate-m3-loading',\n ],\n },\n variants: {\n contained: {\n true: { root: 'size-12 rounded-full bg-secondary-container' },\n false: {},\n },\n },\n defaultVariants: { contained: false },\n});\n\nexport const LoadingIndicator = createLoadingIndicator(({ contained }) => {\n const s = loadingIndicatorTv({ contained });\n return { root: s.root(), indicator: s.indicator() };\n});\nexport type { LoadingIndicatorProps } from '@m3-baseui/core';\n"]}