@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.
- package/dist/{badge.js → components/badge/index.js} +4 -4
- package/dist/components/badge/index.js.map +1 -0
- package/dist/{bottom-app-bar.d.ts → components/bottom-app-bar/index.d.ts} +22 -21
- package/dist/{bottom-app-bar.js → components/bottom-app-bar/index.js} +4 -4
- package/dist/components/bottom-app-bar/index.js.map +1 -0
- package/dist/{bottom-sheet.d.ts → components/bottom-sheet/index.d.ts} +37 -36
- package/dist/{bottom-sheet.js → components/bottom-sheet/index.js} +4 -4
- package/dist/components/bottom-sheet/index.js.map +1 -0
- package/dist/{button.js → components/button/index.js} +3 -3
- package/dist/components/button/index.js.map +1 -0
- package/dist/{button-group.js → components/button-group/index.js} +4 -4
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/{card.js → components/card/index.js} +4 -4
- package/dist/components/card/index.js.map +1 -0
- package/dist/{carousel.js → components/carousel/index.js} +4 -4
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/{checkbox.d.ts → components/checkbox/index.d.ts} +22 -21
- package/dist/{checkbox.js → components/checkbox/index.js} +3 -3
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/{chip.js → components/chip/index.js} +3 -3
- package/dist/components/chip/index.js.map +1 -0
- package/dist/components/date-picker/index.d.ts +189 -0
- package/dist/{date-picker.js → components/date-picker/index.js} +4 -4
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/dialog/index.d.ts +116 -0
- package/dist/components/dialog/index.js +103 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/{divider.js → components/divider/index.js} +3 -3
- package/dist/components/divider/index.js.map +1 -0
- package/dist/{fab.d.ts → components/fab/index.d.ts} +29 -15
- package/dist/components/fab/index.js +79 -0
- package/dist/components/fab/index.js.map +1 -0
- package/dist/{fab-menu.d.ts → components/fab-menu/index.d.ts} +0 -21
- package/dist/{fab-menu.js → components/fab-menu/index.js} +49 -18
- package/dist/components/fab-menu/index.js.map +1 -0
- package/dist/{icon-button.js → components/icon-button/index.js} +3 -3
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/item/index.d.ts +95 -0
- package/dist/{item.js → components/item/index.js} +12 -6
- package/dist/components/item/index.js.map +1 -0
- package/dist/{list.d.ts → components/list/index.d.ts} +4 -4
- package/dist/{list.js → components/list/index.js} +12 -6
- package/dist/components/list/index.js.map +1 -0
- package/dist/{loading-indicator.js → components/loading-indicator/index.js} +4 -4
- package/dist/components/loading-indicator/index.js.map +1 -0
- package/dist/{menu.d.ts → components/menu/index.d.ts} +61 -60
- package/dist/components/menu/index.js +179 -0
- package/dist/components/menu/index.js.map +1 -0
- package/dist/components/navigation-bar/index.d.ts +92 -0
- package/dist/{navigation-bar.js → components/navigation-bar/index.js} +3 -3
- package/dist/components/navigation-bar/index.js.map +1 -0
- package/dist/{navigation-drawer.js → components/navigation-drawer/index.js} +4 -4
- package/dist/components/navigation-drawer/index.js.map +1 -0
- package/dist/components/navigation-rail/index.d.ts +102 -0
- package/dist/{navigation-rail.js → components/navigation-rail/index.js} +4 -4
- package/dist/components/navigation-rail/index.js.map +1 -0
- package/dist/components/progress/index.d.ts +127 -0
- package/dist/components/progress/index.js +101 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/{radio.d.ts → components/radio/index.d.ts} +17 -16
- package/dist/{radio.js → components/radio/index.js} +3 -3
- package/dist/components/radio/index.js.map +1 -0
- package/dist/{search.d.ts → components/search/index.d.ts} +62 -61
- package/dist/{search.js → components/search/index.js} +4 -4
- package/dist/components/search/index.js.map +1 -0
- package/dist/{segmented-button.d.ts → components/segmented-button/index.d.ts} +32 -31
- package/dist/{segmented-button.js → components/segmented-button/index.js} +4 -4
- package/dist/components/segmented-button/index.js.map +1 -0
- package/dist/components/select/index.d.ts +253 -0
- package/dist/components/select/index.js +271 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/{side-sheet.js → components/side-sheet/index.js} +4 -4
- package/dist/components/side-sheet/index.js.map +1 -0
- package/dist/{slider.d.ts → components/slider/index.d.ts} +52 -51
- package/dist/{slider.js → components/slider/index.js} +4 -4
- package/dist/components/slider/index.js.map +1 -0
- package/dist/{snackbar.d.ts → components/snackbar/index.d.ts} +42 -41
- package/dist/{snackbar.js → components/snackbar/index.js} +9 -4
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/{split-button.js → components/split-button/index.js} +4 -4
- package/dist/components/split-button/index.js.map +1 -0
- package/dist/components/switch/index.d.ts +73 -0
- package/dist/{switch.js → components/switch/index.js} +3 -3
- package/dist/components/switch/index.js.map +1 -0
- package/dist/{tabs.js → components/tabs/index.js} +4 -4
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/{textfield.d.ts → components/textfield/index.d.ts} +7 -1
- package/dist/{textfield.js → components/textfield/index.js} +35 -13
- package/dist/components/textfield/index.js.map +1 -0
- package/dist/components/time-picker/index.d.ts +153 -0
- package/dist/{time-picker.js → components/time-picker/index.js} +28 -13
- package/dist/components/time-picker/index.js.map +1 -0
- package/dist/{toolbar.js → components/toolbar/index.js} +4 -4
- package/dist/components/toolbar/index.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +143 -0
- package/dist/components/tooltip/index.js +80 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/{top-app-bar.js → components/top-app-bar/index.js} +4 -4
- package/dist/components/top-app-bar/index.js.map +1 -0
- package/dist/index.d.ts +40 -39
- package/dist/index.js +489 -129
- package/dist/index.js.map +1 -1
- package/package.json +151 -151
- package/styles/preset.css +75 -7
- package/styles/theme.css +2 -0
- package/styles/tokens.css +2 -0
- package/dist/badge.js.map +0 -1
- package/dist/bottom-app-bar.js.map +0 -1
- package/dist/bottom-sheet.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/chip.js.map +0 -1
- package/dist/date-picker.d.ts +0 -188
- package/dist/date-picker.js.map +0 -1
- package/dist/dialog.d.ts +0 -86
- package/dist/dialog.js +0 -68
- package/dist/dialog.js.map +0 -1
- package/dist/divider.js.map +0 -1
- package/dist/fab-menu.js.map +0 -1
- package/dist/fab.js +0 -47
- package/dist/fab.js.map +0 -1
- package/dist/icon-button.js.map +0 -1
- package/dist/item.d.ts +0 -94
- package/dist/item.js.map +0 -1
- package/dist/list.js.map +0 -1
- package/dist/loading-indicator.js.map +0 -1
- package/dist/menu.js +0 -114
- package/dist/menu.js.map +0 -1
- package/dist/navigation-bar.d.ts +0 -91
- package/dist/navigation-bar.js.map +0 -1
- package/dist/navigation-drawer.js.map +0 -1
- package/dist/navigation-rail.d.ts +0 -101
- package/dist/navigation-rail.js.map +0 -1
- package/dist/progress.d.ts +0 -118
- package/dist/progress.js +0 -41
- package/dist/progress.js.map +0 -1
- package/dist/radio.js.map +0 -1
- package/dist/search.js.map +0 -1
- package/dist/segmented-button.js.map +0 -1
- package/dist/select.d.ts +0 -125
- package/dist/select.js +0 -99
- package/dist/select.js.map +0 -1
- package/dist/side-sheet.js.map +0 -1
- package/dist/slider.js.map +0 -1
- package/dist/snackbar.js.map +0 -1
- package/dist/split-button.js.map +0 -1
- package/dist/switch.d.ts +0 -72
- package/dist/switch.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/textfield.js.map +0 -1
- package/dist/time-picker.d.ts +0 -144
- package/dist/time-picker.js.map +0 -1
- package/dist/toolbar.js.map +0 -1
- package/dist/tooltip.d.ts +0 -61
- package/dist/tooltip.js +0 -52
- package/dist/tooltip.js.map +0 -1
- package/dist/top-app-bar.js.map +0 -1
- /package/dist/{badge.d.ts → components/badge/index.d.ts} +0 -0
- /package/dist/{button.d.ts → components/button/index.d.ts} +0 -0
- /package/dist/{button-group.d.ts → components/button-group/index.d.ts} +0 -0
- /package/dist/{card.d.ts → components/card/index.d.ts} +0 -0
- /package/dist/{carousel.d.ts → components/carousel/index.d.ts} +0 -0
- /package/dist/{chip.d.ts → components/chip/index.d.ts} +0 -0
- /package/dist/{divider.d.ts → components/divider/index.d.ts} +0 -0
- /package/dist/{icon-button.d.ts → components/icon-button/index.d.ts} +0 -0
- /package/dist/{loading-indicator.d.ts → components/loading-indicator/index.d.ts} +0 -0
- /package/dist/{navigation-drawer.d.ts → components/navigation-drawer/index.d.ts} +0 -0
- /package/dist/{side-sheet.d.ts → components/side-sheet/index.d.ts} +0 -0
- /package/dist/{split-button.d.ts → components/split-button/index.d.ts} +0 -0
- /package/dist/{tabs.d.ts → components/tabs/index.d.ts} +0 -0
- /package/dist/{toolbar.d.ts → components/toolbar/index.d.ts} +0 -0
- /package/dist/{top-app-bar.d.ts → components/top-app-bar/index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tv.ts","../../../src/components/tabs/tabs.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,SAAS,EAAA,CAAG;AAAA,EACvB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,eAAA;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,+CAAA;AAAA;AAAA,MAEA,iEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,GAAA,EAAK;AAAA,MACH,oFAAA;AAAA,MACA,kFAAA;AAAA,MACA,yBAAA;AAAA;AAAA,MAEA,0EAAA;AAAA,MACA,4IAAA;AAAA,MACA,kDAAA;AAAA,MACA,0DAAA;AAAA,MACA,qDAAA;AAAA;AAAA;AAAA,MAGA,6GAAA;AAAA;AAAA;AAAA,MAGA;AAAA,KACF;AAAA,IACA,SAAA,EAAW;AAAA,MACT,qCAAA;AAAA,MACA,kEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA;AAAA;AAAA,MAGP,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,mGAAA;AAAA,QACL,SAAA,EAAW;AAAA,OACb;AAAA;AAAA,MAEA,SAAA,EAAW,EAAE,GAAA,EAAK,+BAAA,EAAiC,WAAW,SAAA;AAAU;AAC1E,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,IAAA,GAAO,UAAA,CAAW,CAAC,OAAA,KAAY;AAC1C,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,EAAE,OAAA,EAAS,CAAA;AAC5B,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,IACb,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,IACb,GAAA,EAAK,EAAE,GAAA,EAAI;AAAA,IACX,SAAA,EAAW,EAAE,SAAA,EAAU;AAAA,IACvB,KAAA,EAAO,EAAE,KAAA;AAAM,GACjB;AACF,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 * tabs.ts — tailwind-variants slots for the M3 Tabs.\n *\n * The active-tab underline reads Base UI's --active-tab-width/left CSS vars on\n * the indicator. The `variant` recolors the active tab (primary → primary,\n * secondary → on-surface). Tabs carry a `before:` state layer + ripple.\n */\nimport { createTabs } from '@m3-baseui/core';\nimport { tv } from '../../tv';\n\nexport const tabsTv = tv({\n slots: {\n root: 'flex flex-col',\n list: [\n 'relative flex border-b border-surface-variant',\n // M3 scrollable tabs: horizontal overflow, no wrap, hidden scrollbar.\n 'data-[scrollable]:overflow-x-auto data-[scrollable]:flex-nowrap',\n 'data-[scrollable]:[scrollbar-width:none] data-[scrollable]:[&::-webkit-scrollbar]:hidden',\n ],\n tab: [\n 'relative flex shrink-0 items-center justify-center gap-2 h-12 px-4 overflow-hidden',\n 'cursor-pointer select-none border-0 bg-transparent outline-none text-title-small',\n 'text-on-surface-variant',\n // Icon slot (24dp), centered.\n '[&_[data-slot=tab-icon]]:inline-flex [&_[data-slot=tab-icon]>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 // M3 disabled (per-token, not a blanket fade): label + icon on-surface/0.38,\n // no state layer. currentColor carries the dim to the icon slot.\n 'data-[disabled]:text-on-surface/[0.38] data-[disabled]:before:opacity-0 data-[disabled]:pointer-events-none',\n // A disabled tab that is also the active value stays dimmed: the variant's\n // data-[active] color has equal specificity, so a combined selector wins.\n 'data-[disabled]:data-[active]:text-on-surface/[0.38]',\n ],\n indicator: [\n 'absolute bottom-0 left-0 bg-primary',\n 'w-[var(--active-tab-width)] translate-x-[var(--active-tab-left)]',\n 'transition-all duration-200 ease-standard',\n ],\n panel: 'p-4 outline-none',\n },\n variants: {\n variant: {\n // primary: 3dp active indicator with rounded top corners; icon stacks\n // above the label (64dp tall) when a tab carries an icon.\n primary: {\n tab: 'data-[active]:text-primary data-[with-icon]:flex-col data-[with-icon]:h-16 data-[with-icon]:gap-1',\n indicator: 'h-[3px] rounded-t-[3px]',\n },\n // secondary: 2dp square active indicator, active label = on-surface\n secondary: { tab: 'data-[active]:text-on-surface', indicator: 'h-[2px]' },\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n});\n\nexport const Tabs = createTabs((variant) => {\n const s = tabsTv({ variant });\n return {\n root: s.root(),\n list: s.list(),\n tab: s.tab(),\n indicator: s.indicator(),\n panel: s.panel(),\n };\n});\nexport type { TabsVariant } from '@m3-baseui/core';\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import * as _m3_baseui_core from '@m3-baseui/core';
|
|
3
|
-
export { TextFieldProps, TextFieldVariant } from '@m3-baseui/core';
|
|
3
|
+
export { TextFieldIconAction, TextFieldProps, TextFieldVariant } from '@m3-baseui/core';
|
|
4
4
|
import * as tailwind_variants from 'tailwind-variants';
|
|
5
5
|
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
|
|
6
6
|
|
|
@@ -24,6 +24,8 @@ declare const textFieldTv: tailwind_variants.TVReturnType<{
|
|
|
24
24
|
label: string[];
|
|
25
25
|
leadingIcon: string;
|
|
26
26
|
trailingIcon: string;
|
|
27
|
+
leadingIconButton: string[];
|
|
28
|
+
trailingIconButton: string[];
|
|
27
29
|
supporting: string[];
|
|
28
30
|
supportingText: string;
|
|
29
31
|
counter: string;
|
|
@@ -71,6 +73,8 @@ declare const textFieldTv: tailwind_variants.TVReturnType<{
|
|
|
71
73
|
label: string[];
|
|
72
74
|
leadingIcon: string;
|
|
73
75
|
trailingIcon: string;
|
|
76
|
+
leadingIconButton: string[];
|
|
77
|
+
trailingIconButton: string[];
|
|
74
78
|
supporting: string[];
|
|
75
79
|
supportingText: string;
|
|
76
80
|
counter: string;
|
|
@@ -94,6 +98,8 @@ declare const textFieldTv: tailwind_variants.TVReturnType<{
|
|
|
94
98
|
label: string[];
|
|
95
99
|
leadingIcon: string;
|
|
96
100
|
trailingIcon: string;
|
|
101
|
+
leadingIconButton: string[];
|
|
102
|
+
trailingIconButton: string[];
|
|
97
103
|
supporting: string[];
|
|
98
104
|
supportingText: string;
|
|
99
105
|
counter: string;
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
import { createTextField } from '@m3-baseui/core';
|
|
3
3
|
import { tv } from 'tailwind-variants';
|
|
4
4
|
|
|
5
|
-
// src/textfield.ts
|
|
5
|
+
// src/components/textfield/textfield.ts
|
|
6
|
+
var iconVisual = "inline-flex items-center justify-center shrink-0 text-on-surface-variant [&>svg]:size-6";
|
|
6
7
|
var textFieldTv = tv({
|
|
7
8
|
slots: {
|
|
8
9
|
root: "flex flex-col gap-1 min-w-[210px]",
|
|
9
10
|
field: [
|
|
10
|
-
"relative flex items-stretch gap-3 h-14 px-4 box-border",
|
|
11
|
+
"relative flex items-stretch gap-3 h-14 px-4 box-border text-on-surface",
|
|
11
12
|
"transition-[border-color,padding] duration-150 ease-standard",
|
|
12
13
|
"group-data-[disabled]:opacity-[0.38] group-data-[disabled]:pointer-events-none"
|
|
13
14
|
],
|
|
14
|
-
inputWrap: "relative flex-1 flex items-center min-w-0",
|
|
15
|
+
inputWrap: "relative z-0 flex-1 flex items-center min-w-0 overflow-visible",
|
|
15
16
|
input: [
|
|
16
17
|
"peer w-full bg-transparent outline-none border-0 p-0 text-body-large text-on-surface",
|
|
17
18
|
"placeholder:text-on-surface-variant"
|
|
@@ -22,8 +23,18 @@ var textFieldTv = tv({
|
|
|
22
23
|
"transition-all duration-150 ease-standard",
|
|
23
24
|
"group-data-[focused]:text-primary group-data-[invalid]:text-error"
|
|
24
25
|
],
|
|
25
|
-
leadingIcon:
|
|
26
|
-
trailingIcon:
|
|
26
|
+
leadingIcon: iconVisual,
|
|
27
|
+
trailingIcon: iconVisual,
|
|
28
|
+
leadingIconButton: [
|
|
29
|
+
iconVisual,
|
|
30
|
+
"relative size-12 p-0 border-0 bg-transparent cursor-pointer",
|
|
31
|
+
"group-data-[disabled]:pointer-events-none"
|
|
32
|
+
],
|
|
33
|
+
trailingIconButton: [
|
|
34
|
+
iconVisual,
|
|
35
|
+
"relative size-12 p-0 border-0 bg-transparent cursor-pointer",
|
|
36
|
+
"group-data-[disabled]:pointer-events-none"
|
|
37
|
+
],
|
|
27
38
|
supporting: [
|
|
28
39
|
"flex justify-between gap-4 px-4 text-body-small text-on-surface-variant",
|
|
29
40
|
"group-data-[invalid]:text-error"
|
|
@@ -35,9 +46,15 @@ var textFieldTv = tv({
|
|
|
35
46
|
variant: {
|
|
36
47
|
filled: {
|
|
37
48
|
field: [
|
|
38
|
-
"rounded-t-extra-small bg-surface-container-highest",
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
"overflow-hidden rounded-t-extra-small bg-surface-container-highest",
|
|
50
|
+
// M3 filled hover: state layer (on-surface × state-hover) + indicator color.
|
|
51
|
+
"before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none",
|
|
52
|
+
"before:transition-opacity before:duration-100",
|
|
53
|
+
"hover:before:opacity-[var(--md-sys-state-hover)]",
|
|
54
|
+
"group-data-[disabled]:before:opacity-0",
|
|
55
|
+
// M3 filled resting active-indicator: 1dp on-surface-variant.
|
|
56
|
+
"border-b border-on-surface-variant hover:border-on-surface",
|
|
57
|
+
// M3 filled focus-active-indicator-height is 3dp.
|
|
41
58
|
"group-data-[focused]:border-b-[3px] group-data-[focused]:border-primary group-data-[invalid]:border-error"
|
|
42
59
|
],
|
|
43
60
|
input: "pt-3",
|
|
@@ -48,15 +65,18 @@ var textFieldTv = tv({
|
|
|
48
65
|
},
|
|
49
66
|
outlined: {
|
|
50
67
|
field: [
|
|
51
|
-
|
|
68
|
+
// Outlined hover = outline color only (no container state layer per M3).
|
|
69
|
+
"overflow-visible rounded-extra-small border border-outline hover:border-on-surface",
|
|
52
70
|
// M3 outlined focus-outline-width is 3dp (matches Select's trigger);
|
|
53
71
|
// padding drops 2px so content stays steady as the 1dp border grows.
|
|
54
72
|
"group-data-[focused]:border-[3px] group-data-[focused]:border-primary group-data-[focused]:px-[14px]",
|
|
55
73
|
"group-data-[invalid]:border-error"
|
|
56
74
|
],
|
|
57
75
|
label: [
|
|
58
|
-
"group-data-[focused]:top-0 group-data-[focused]:-translate-y-1/2 group-data-[focused]:
|
|
59
|
-
"group-data-[
|
|
76
|
+
"group-data-[focused]:top-0 group-data-[focused]:-translate-y-1/2 group-data-[focused]:z-[1]",
|
|
77
|
+
"group-data-[focused]:text-body-small group-data-[focused]:bg-surface group-data-[focused]:px-1 group-data-[focused]:leading-none",
|
|
78
|
+
"group-data-[filled]:top-0 group-data-[filled]:-translate-y-1/2 group-data-[filled]:z-[1]",
|
|
79
|
+
"group-data-[filled]:text-body-small group-data-[filled]:bg-surface group-data-[filled]:px-1 group-data-[filled]:leading-none"
|
|
60
80
|
]
|
|
61
81
|
}
|
|
62
82
|
}
|
|
@@ -75,6 +95,8 @@ var TextField = createTextField(({ variant }) => {
|
|
|
75
95
|
label: c.label(),
|
|
76
96
|
leadingIcon: c.leadingIcon(),
|
|
77
97
|
trailingIcon: c.trailingIcon(),
|
|
98
|
+
leadingIconButton: c.leadingIconButton(),
|
|
99
|
+
trailingIconButton: c.trailingIconButton(),
|
|
78
100
|
supporting: c.supporting(),
|
|
79
101
|
supportingText: c.supportingText(),
|
|
80
102
|
counter: c.counter()
|
|
@@ -82,5 +104,5 @@ var TextField = createTextField(({ variant }) => {
|
|
|
82
104
|
});
|
|
83
105
|
|
|
84
106
|
export { TextField, textFieldTv };
|
|
85
|
-
//# sourceMappingURL=
|
|
86
|
-
//# sourceMappingURL=
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
108
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/textfield/textfield.ts"],"names":[],"mappings":";;;;;AAYA,IAAM,UAAA,GACJ,yFAAA;AAEK,IAAM,cAAc,EAAA,CAAG;AAAA,EAC5B,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,mCAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,wEAAA;AAAA,MACA,8DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,SAAA,EAAW,gEAAA;AAAA,IACX,KAAA,EAAO;AAAA,MACL,sFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,iDAAA;AAAA,MACA,kEAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,UAAA;AAAA,IACd,iBAAA,EAAmB;AAAA,MACjB,UAAA;AAAA,MACA,6DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,UAAA;AAAA,MACA,6DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,yEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,cAAA,EAAgB,SAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ;AAAA,QACN,KAAA,EAAO;AAAA,UACL,oEAAA;AAAA;AAAA,UAEA,uHAAA;AAAA,UACA,+CAAA;AAAA,UACA,kDAAA;AAAA,UACA,wCAAA;AAAA;AAAA,UAEA,4DAAA;AAAA;AAAA,UAEA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,sGAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,QAAA,EAAU;AAAA,QACR,KAAA,EAAO;AAAA;AAAA,UAEL,oFAAA;AAAA;AAAA;AAAA,UAGA,sGAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,6FAAA;AAAA,UACA,kIAAA;AAAA,UACA,0FAAA;AAAA,UACA;AAAA;AACF;AACF;AACF,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC;AAEM,IAAM,SAAA,GAAY,eAAA,CAAgB,CAAC,EAAE,SAAQ,KAAM;AACxD,EAAA,MAAM,CAAA,GAAI,WAAA,CAAY,EAAE,OAAA,EAAS,CAAA;AACjC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,IACb,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,IACf,SAAA,EAAW,EAAE,SAAA,EAAU;AAAA,IACvB,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,IACf,KAAA,EAAO,EAAE,KAAA,EAAM;AAAA,IACf,WAAA,EAAa,EAAE,WAAA,EAAY;AAAA,IAC3B,YAAA,EAAc,EAAE,YAAA,EAAa;AAAA,IAC7B,iBAAA,EAAmB,EAAE,iBAAA,EAAkB;AAAA,IACvC,kBAAA,EAAoB,EAAE,kBAAA,EAAmB;AAAA,IACzC,UAAA,EAAY,EAAE,UAAA,EAAW;AAAA,IACzB,cAAA,EAAgB,EAAE,cAAA,EAAe;AAAA,IACjC,OAAA,EAAS,EAAE,OAAA;AAAQ,GACrB;AACF,CAAC","file":"index.js","sourcesContent":["/**\n * textfield.ts — tailwind-variants slots for the M3 TextField.\n *\n * 56dp tall. The floating label and focus/filled border key off Field's\n * `data-focused` / `data-filled` / `data-invalid` via the `group` on Root.\n * Filled = surface-container-highest with a bottom indicator; outlined = a\n * border that thickens to 3dp primary on focus (M3 focus-outline-width). Same\n * DOM as the VE build.\n */\nimport { createTextField } from '@m3-baseui/core';\nimport { tv } from 'tailwind-variants';\n\nconst iconVisual =\n 'inline-flex items-center justify-center shrink-0 text-on-surface-variant [&>svg]:size-6';\n\nexport const textFieldTv = tv({\n slots: {\n root: 'flex flex-col gap-1 min-w-[210px]',\n field: [\n 'relative flex items-stretch gap-3 h-14 px-4 box-border text-on-surface',\n 'transition-[border-color,padding] duration-150 ease-standard',\n 'group-data-[disabled]:opacity-[0.38] group-data-[disabled]:pointer-events-none',\n ],\n inputWrap: 'relative z-0 flex-1 flex items-center min-w-0 overflow-visible',\n input: [\n 'peer w-full bg-transparent outline-none border-0 p-0 text-body-large text-on-surface',\n 'placeholder:text-on-surface-variant',\n ],\n label: [\n 'absolute left-0 pointer-events-none origin-left',\n 'top-1/2 -translate-y-1/2 text-body-large text-on-surface-variant',\n 'transition-all duration-150 ease-standard',\n 'group-data-[focused]:text-primary group-data-[invalid]:text-error',\n ],\n leadingIcon: iconVisual,\n trailingIcon: iconVisual,\n leadingIconButton: [\n iconVisual,\n 'relative size-12 p-0 border-0 bg-transparent cursor-pointer',\n 'group-data-[disabled]:pointer-events-none',\n ],\n trailingIconButton: [\n iconVisual,\n 'relative size-12 p-0 border-0 bg-transparent cursor-pointer',\n 'group-data-[disabled]:pointer-events-none',\n ],\n supporting: [\n 'flex justify-between gap-4 px-4 text-body-small text-on-surface-variant',\n 'group-data-[invalid]:text-error',\n ],\n supportingText: 'min-w-0',\n counter: 'shrink-0 tabular-nums',\n },\n variants: {\n variant: {\n filled: {\n field: [\n 'overflow-hidden rounded-t-extra-small bg-surface-container-highest',\n // M3 filled hover: state layer (on-surface × state-hover) + indicator color.\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 'group-data-[disabled]:before:opacity-0',\n // M3 filled resting active-indicator: 1dp on-surface-variant.\n 'border-b border-on-surface-variant hover:border-on-surface',\n // M3 filled focus-active-indicator-height is 3dp.\n 'group-data-[focused]:border-b-[3px] group-data-[focused]:border-primary group-data-[invalid]:border-error',\n ],\n input: 'pt-3',\n label: [\n 'group-data-[focused]:top-1.5 group-data-[focused]:translate-y-0 group-data-[focused]:text-body-small',\n 'group-data-[filled]:top-1.5 group-data-[filled]:translate-y-0 group-data-[filled]:text-body-small',\n ],\n },\n outlined: {\n field: [\n // Outlined hover = outline color only (no container state layer per M3).\n 'overflow-visible rounded-extra-small border border-outline hover:border-on-surface',\n // M3 outlined focus-outline-width is 3dp (matches Select's trigger);\n // padding drops 2px so content stays steady as the 1dp border grows.\n 'group-data-[focused]:border-[3px] group-data-[focused]:border-primary group-data-[focused]:px-[14px]',\n 'group-data-[invalid]:border-error',\n ],\n label: [\n 'group-data-[focused]:top-0 group-data-[focused]:-translate-y-1/2 group-data-[focused]:z-[1]',\n 'group-data-[focused]:text-body-small group-data-[focused]:bg-surface group-data-[focused]:px-1 group-data-[focused]:leading-none',\n 'group-data-[filled]:top-0 group-data-[filled]:-translate-y-1/2 group-data-[filled]:z-[1]',\n 'group-data-[filled]:text-body-small group-data-[filled]:bg-surface group-data-[filled]:px-1 group-data-[filled]:leading-none',\n ],\n },\n },\n },\n defaultVariants: {\n variant: 'filled',\n },\n});\n\nexport const TextField = createTextField(({ variant }) => {\n const c = textFieldTv({ variant });\n return {\n root: c.root(),\n field: c.field(),\n inputWrap: c.inputWrap(),\n input: c.input(),\n label: c.label(),\n leadingIcon: c.leadingIcon(),\n trailingIcon: c.trailingIcon(),\n leadingIconButton: c.leadingIconButton(),\n trailingIconButton: c.trailingIconButton(),\n supporting: c.supporting(),\n supportingText: c.supportingText(),\n counter: c.counter(),\n };\n});\n\nexport type { TextFieldIconAction, TextFieldProps, TextFieldVariant } from '@m3-baseui/core';\n"]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as _m3_baseui_core from '@m3-baseui/core';
|
|
2
|
+
export { TimePickerVariant, TimeValue } from '@m3-baseui/core';
|
|
3
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
4
|
+
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
|
|
5
|
+
import * as tailwind_merge from 'tailwind-merge';
|
|
6
|
+
|
|
7
|
+
declare const timePickerTv: tailwind_variants.TVReturnType<{
|
|
8
|
+
[key: string]: {
|
|
9
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
10
|
+
header?: tailwind_merge.ClassNameValue;
|
|
11
|
+
display?: tailwind_merge.ClassNameValue;
|
|
12
|
+
dial?: tailwind_merge.ClassNameValue;
|
|
13
|
+
root?: tailwind_merge.ClassNameValue;
|
|
14
|
+
field?: tailwind_merge.ClassNameValue;
|
|
15
|
+
colon?: tailwind_merge.ClassNameValue;
|
|
16
|
+
periods?: tailwind_merge.ClassNameValue;
|
|
17
|
+
period?: tailwind_merge.ClassNameValue;
|
|
18
|
+
dialNumber?: tailwind_merge.ClassNameValue;
|
|
19
|
+
dialHand?: tailwind_merge.ClassNameValue;
|
|
20
|
+
dialCenter?: tailwind_merge.ClassNameValue;
|
|
21
|
+
inputs?: tailwind_merge.ClassNameValue;
|
|
22
|
+
inputBox?: tailwind_merge.ClassNameValue;
|
|
23
|
+
inputCaption?: tailwind_merge.ClassNameValue;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
} | {
|
|
27
|
+
[x: string]: {
|
|
28
|
+
[x: string]: tailwind_merge.ClassNameValue | {
|
|
29
|
+
header?: tailwind_merge.ClassNameValue;
|
|
30
|
+
display?: tailwind_merge.ClassNameValue;
|
|
31
|
+
dial?: tailwind_merge.ClassNameValue;
|
|
32
|
+
root?: tailwind_merge.ClassNameValue;
|
|
33
|
+
field?: tailwind_merge.ClassNameValue;
|
|
34
|
+
colon?: tailwind_merge.ClassNameValue;
|
|
35
|
+
periods?: tailwind_merge.ClassNameValue;
|
|
36
|
+
period?: tailwind_merge.ClassNameValue;
|
|
37
|
+
dialNumber?: tailwind_merge.ClassNameValue;
|
|
38
|
+
dialHand?: tailwind_merge.ClassNameValue;
|
|
39
|
+
dialCenter?: tailwind_merge.ClassNameValue;
|
|
40
|
+
inputs?: tailwind_merge.ClassNameValue;
|
|
41
|
+
inputBox?: tailwind_merge.ClassNameValue;
|
|
42
|
+
inputCaption?: tailwind_merge.ClassNameValue;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
} | {}, {
|
|
46
|
+
root: string[];
|
|
47
|
+
header: string[];
|
|
48
|
+
display: string[];
|
|
49
|
+
field: string[];
|
|
50
|
+
colon: string[];
|
|
51
|
+
periods: string[];
|
|
52
|
+
period: string[];
|
|
53
|
+
dial: string[];
|
|
54
|
+
dialNumber: string[];
|
|
55
|
+
dialHand: string[];
|
|
56
|
+
dialCenter: string[];
|
|
57
|
+
inputs: string[];
|
|
58
|
+
inputBox: string[];
|
|
59
|
+
inputCaption: string[];
|
|
60
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
61
|
+
[key: string]: {
|
|
62
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
63
|
+
header?: tailwind_merge.ClassNameValue;
|
|
64
|
+
display?: tailwind_merge.ClassNameValue;
|
|
65
|
+
dial?: tailwind_merge.ClassNameValue;
|
|
66
|
+
root?: tailwind_merge.ClassNameValue;
|
|
67
|
+
field?: tailwind_merge.ClassNameValue;
|
|
68
|
+
colon?: tailwind_merge.ClassNameValue;
|
|
69
|
+
periods?: tailwind_merge.ClassNameValue;
|
|
70
|
+
period?: tailwind_merge.ClassNameValue;
|
|
71
|
+
dialNumber?: tailwind_merge.ClassNameValue;
|
|
72
|
+
dialHand?: tailwind_merge.ClassNameValue;
|
|
73
|
+
dialCenter?: tailwind_merge.ClassNameValue;
|
|
74
|
+
inputs?: tailwind_merge.ClassNameValue;
|
|
75
|
+
inputBox?: tailwind_merge.ClassNameValue;
|
|
76
|
+
inputCaption?: tailwind_merge.ClassNameValue;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
} | {}>, {
|
|
80
|
+
[key: string]: {
|
|
81
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
82
|
+
header?: tailwind_merge.ClassNameValue;
|
|
83
|
+
display?: tailwind_merge.ClassNameValue;
|
|
84
|
+
dial?: tailwind_merge.ClassNameValue;
|
|
85
|
+
root?: tailwind_merge.ClassNameValue;
|
|
86
|
+
field?: tailwind_merge.ClassNameValue;
|
|
87
|
+
colon?: tailwind_merge.ClassNameValue;
|
|
88
|
+
periods?: tailwind_merge.ClassNameValue;
|
|
89
|
+
period?: tailwind_merge.ClassNameValue;
|
|
90
|
+
dialNumber?: tailwind_merge.ClassNameValue;
|
|
91
|
+
dialHand?: tailwind_merge.ClassNameValue;
|
|
92
|
+
dialCenter?: tailwind_merge.ClassNameValue;
|
|
93
|
+
inputs?: tailwind_merge.ClassNameValue;
|
|
94
|
+
inputBox?: tailwind_merge.ClassNameValue;
|
|
95
|
+
inputCaption?: tailwind_merge.ClassNameValue;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
} | {}, {
|
|
99
|
+
root: string[];
|
|
100
|
+
header: string[];
|
|
101
|
+
display: string[];
|
|
102
|
+
field: string[];
|
|
103
|
+
colon: string[];
|
|
104
|
+
periods: string[];
|
|
105
|
+
period: string[];
|
|
106
|
+
dial: string[];
|
|
107
|
+
dialNumber: string[];
|
|
108
|
+
dialHand: string[];
|
|
109
|
+
dialCenter: string[];
|
|
110
|
+
inputs: string[];
|
|
111
|
+
inputBox: string[];
|
|
112
|
+
inputCaption: string[];
|
|
113
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
|
114
|
+
root: string[];
|
|
115
|
+
header: string[];
|
|
116
|
+
display: string[];
|
|
117
|
+
field: string[];
|
|
118
|
+
colon: string[];
|
|
119
|
+
periods: string[];
|
|
120
|
+
period: string[];
|
|
121
|
+
dial: string[];
|
|
122
|
+
dialNumber: string[];
|
|
123
|
+
dialHand: string[];
|
|
124
|
+
dialCenter: string[];
|
|
125
|
+
inputs: string[];
|
|
126
|
+
inputBox: string[];
|
|
127
|
+
inputCaption: string[];
|
|
128
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
129
|
+
[key: string]: {
|
|
130
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
131
|
+
header?: tailwind_merge.ClassNameValue;
|
|
132
|
+
display?: tailwind_merge.ClassNameValue;
|
|
133
|
+
dial?: tailwind_merge.ClassNameValue;
|
|
134
|
+
root?: tailwind_merge.ClassNameValue;
|
|
135
|
+
field?: tailwind_merge.ClassNameValue;
|
|
136
|
+
colon?: tailwind_merge.ClassNameValue;
|
|
137
|
+
periods?: tailwind_merge.ClassNameValue;
|
|
138
|
+
period?: tailwind_merge.ClassNameValue;
|
|
139
|
+
dialNumber?: tailwind_merge.ClassNameValue;
|
|
140
|
+
dialHand?: tailwind_merge.ClassNameValue;
|
|
141
|
+
dialCenter?: tailwind_merge.ClassNameValue;
|
|
142
|
+
inputs?: tailwind_merge.ClassNameValue;
|
|
143
|
+
inputBox?: tailwind_merge.ClassNameValue;
|
|
144
|
+
inputCaption?: tailwind_merge.ClassNameValue;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
} | {}>, unknown, unknown, undefined>>;
|
|
148
|
+
declare const TimePicker: {
|
|
149
|
+
({ variant, format, value, defaultValue, onValueChange, className, }: _m3_baseui_core.TimePickerOwnProps): React.JSX.Element;
|
|
150
|
+
displayName: string;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
export { TimePicker, timePickerTv };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createTimePicker } from '@m3-baseui/core';
|
|
3
3
|
import { tv as tv$1 } from 'tailwind-variants';
|
|
4
4
|
|
|
5
|
-
// src/time-picker.ts
|
|
5
|
+
// src/components/time-picker/time-picker.ts
|
|
6
6
|
var TYPESCALE = [
|
|
7
7
|
"display-large",
|
|
8
8
|
"display-medium",
|
|
@@ -31,33 +31,47 @@ var tv = (options, config) => tv$1(options, {
|
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
// src/time-picker.ts
|
|
34
|
+
// src/components/time-picker/time-picker.ts
|
|
35
|
+
var stateLayerBase = [
|
|
36
|
+
"overflow-hidden",
|
|
37
|
+
'before:content-[""] before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100',
|
|
38
|
+
"hover:before:opacity-[var(--md-sys-state-hover)]",
|
|
39
|
+
"focus-visible:before:opacity-[var(--md-sys-state-focus)]",
|
|
40
|
+
"active:before:opacity-[var(--md-sys-state-pressed)]",
|
|
41
|
+
"focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2"
|
|
42
|
+
];
|
|
35
43
|
var timePickerTv = tv({
|
|
36
44
|
slots: {
|
|
37
|
-
root: ["inline-flex flex-col items-center
|
|
38
|
-
header: ["flex items-center gap-
|
|
45
|
+
root: ["inline-flex flex-col items-center p-2 text-on-surface"],
|
|
46
|
+
header: ["flex items-center gap-3 min-h-[98px]"],
|
|
47
|
+
display: ["inline-flex items-center"],
|
|
39
48
|
field: [
|
|
40
|
-
"
|
|
49
|
+
"relative",
|
|
50
|
+
...stateLayerBase,
|
|
51
|
+
"inline-grid place-items-center w-24 h-20 rounded-small box-border",
|
|
41
52
|
"bg-surface-container-highest text-on-surface text-display-large cursor-pointer outline-none",
|
|
42
53
|
"border border-transparent transition-colors duration-100",
|
|
43
54
|
"data-[selected]:bg-primary-container data-[selected]:text-on-primary-container"
|
|
44
55
|
],
|
|
45
|
-
colon: ["text-display-large text-on-surface px-1 leading-none"],
|
|
56
|
+
colon: ["text-display-large text-on-surface px-1 leading-none self-center"],
|
|
46
57
|
periods: [
|
|
47
|
-
"inline-flex flex-col rounded-small overflow-hidden border border-outline
|
|
48
|
-
"m-0 p-0 min-w-0"
|
|
58
|
+
"inline-flex flex-col shrink-0 rounded-small overflow-hidden border border-outline",
|
|
59
|
+
"h-[98px] w-[52px] m-0 p-0 min-w-0 box-border"
|
|
49
60
|
],
|
|
50
61
|
period: [
|
|
51
|
-
"
|
|
62
|
+
"relative",
|
|
63
|
+
...stateLayerBase,
|
|
64
|
+
"flex-1 inline-flex items-center justify-center min-h-12 h-12 w-full",
|
|
52
65
|
"border-0 bg-transparent",
|
|
53
66
|
"text-title-medium text-on-surface-variant cursor-pointer outline-none",
|
|
54
67
|
"data-[selected]:bg-secondary-container data-[selected]:text-on-secondary-container",
|
|
55
68
|
"[&+&]:border-t [&+&]:border-outline"
|
|
56
69
|
],
|
|
57
70
|
dial: [
|
|
58
|
-
"relative size-[256px]
|
|
71
|
+
"relative size-[256px] mt-[28px] p-0 min-w-0 border-0 rounded-full bg-surface-container-highest"
|
|
59
72
|
],
|
|
60
73
|
dialNumber: [
|
|
74
|
+
...stateLayerBase,
|
|
61
75
|
"absolute -translate-x-1/2 -translate-y-1/2 inline-grid place-items-center size-12 rounded-full",
|
|
62
76
|
"border-0 bg-transparent",
|
|
63
77
|
"text-body-large text-on-surface cursor-pointer outline-none select-none",
|
|
@@ -69,7 +83,7 @@ var timePickerTv = tv({
|
|
|
69
83
|
dialCenter: [
|
|
70
84
|
"absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary pointer-events-none"
|
|
71
85
|
],
|
|
72
|
-
inputs: ["flex items-start gap-
|
|
86
|
+
inputs: ["flex items-start gap-3"],
|
|
73
87
|
inputBox: [
|
|
74
88
|
"w-24 h-20 rounded-small box-border text-center",
|
|
75
89
|
"bg-surface-container-highest text-on-surface text-display-large outline-none",
|
|
@@ -83,6 +97,7 @@ var tp = timePickerTv();
|
|
|
83
97
|
var TimePicker = createTimePicker(() => ({
|
|
84
98
|
root: tp.root(),
|
|
85
99
|
header: tp.header(),
|
|
100
|
+
display: tp.display(),
|
|
86
101
|
field: tp.field(),
|
|
87
102
|
colon: tp.colon(),
|
|
88
103
|
periods: tp.periods(),
|
|
@@ -97,5 +112,5 @@ var TimePicker = createTimePicker(() => ({
|
|
|
97
112
|
}));
|
|
98
113
|
|
|
99
114
|
export { TimePicker, timePickerTv };
|
|
100
|
-
//# sourceMappingURL=
|
|
101
|
-
//# sourceMappingURL=
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tv.ts","../../../src/components/time-picker/time-picker.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/BH,IAAM,cAAA,GAAiB;AAAA,EACrB,iBAAA;AAAA,EACA,yLAAA;AAAA,EACA,kDAAA;AAAA,EACA,0DAAA;AAAA,EACA,qDAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,eAAe,EAAA,CAAG;AAAA,EAC7B,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAC,uDAAuD,CAAA;AAAA,IAC9D,MAAA,EAAQ,CAAC,sCAAsC,CAAA;AAAA,IAC/C,OAAA,EAAS,CAAC,0BAA0B,CAAA;AAAA,IACpC,KAAA,EAAO;AAAA,MACL,UAAA;AAAA,MACA,GAAG,cAAA;AAAA,MACH,mEAAA;AAAA,MACA,6FAAA;AAAA,MACA,0DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,CAAC,kEAAkE,CAAA;AAAA,IAC1E,OAAA,EAAS;AAAA,MACP,mFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA;AAAA,MACA,GAAG,cAAA;AAAA,MACH,qEAAA;AAAA,MACA,yBAAA;AAAA,MACA,uEAAA;AAAA,MACA,oFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,GAAG,cAAA;AAAA,MACH,gGAAA;AAAA,MACA,yBAAA;AAAA,MACA,yEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU;AAAA,MACR;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,CAAC,wBAAwB,CAAA;AAAA,IACjC,QAAA,EAAU;AAAA,MACR,gDAAA;AAAA,MACA,8EAAA;AAAA,MACA,2DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,YAAA,EAAc,CAAC,oDAAoD;AAAA;AAEvE,CAAC;AAED,IAAM,KAAK,YAAA,EAAa;AACjB,IAAM,UAAA,GAAa,iBAAiB,OAAO;AAAA,EAChD,IAAA,EAAM,GAAG,IAAA,EAAK;AAAA,EACd,MAAA,EAAQ,GAAG,MAAA,EAAO;AAAA,EAClB,OAAA,EAAS,GAAG,OAAA,EAAQ;AAAA,EACpB,KAAA,EAAO,GAAG,KAAA,EAAM;AAAA,EAChB,KAAA,EAAO,GAAG,KAAA,EAAM;AAAA,EAChB,OAAA,EAAS,GAAG,OAAA,EAAQ;AAAA,EACpB,MAAA,EAAQ,GAAG,MAAA,EAAO;AAAA,EAClB,IAAA,EAAM,GAAG,IAAA,EAAK;AAAA,EACd,UAAA,EAAY,GAAG,UAAA,EAAW;AAAA,EAC1B,QAAA,EAAU,GAAG,QAAA,EAAS;AAAA,EACtB,UAAA,EAAY,GAAG,UAAA,EAAW;AAAA,EAC1B,MAAA,EAAQ,GAAG,MAAA,EAAO;AAAA,EAClB,QAAA,EAAU,GAAG,QAAA,EAAS;AAAA,EACtB,YAAA,EAAc,GAAG,YAAA;AACnB,CAAA,CAAE","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 * time-picker.ts — Tailwind classes for the M3 Time picker (dial + input).\n *\n * Dimensions follow Material Android timepicker dimens (96×80 display, 52×98\n * period toggle, 48dp period targets, 12dp display↔toggle gap, 256dp dial,\n * 28dp dial top margin). State layers on interactive slots match other M3 controls.\n */\nimport { createTimePicker } from '@m3-baseui/core';\nimport { tv } from '../../tv';\n\nexport type { TimePickerVariant, TimeValue } from '@m3-baseui/core';\n\nconst stateLayerBase = [\n 'overflow-hidden',\n 'before:content-[\"\"] before:absolute before:inset-0 before:rounded-[inherit] 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 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2',\n] as const;\n\nexport const timePickerTv = tv({\n slots: {\n root: ['inline-flex flex-col items-center p-2 text-on-surface'],\n header: ['flex items-center gap-3 min-h-[98px]'],\n display: ['inline-flex items-center'],\n field: [\n 'relative',\n ...stateLayerBase,\n 'inline-grid place-items-center w-24 h-20 rounded-small box-border',\n 'bg-surface-container-highest text-on-surface text-display-large cursor-pointer outline-none',\n 'border border-transparent transition-colors duration-100',\n 'data-[selected]:bg-primary-container data-[selected]:text-on-primary-container',\n ],\n colon: ['text-display-large text-on-surface px-1 leading-none self-center'],\n periods: [\n 'inline-flex flex-col shrink-0 rounded-small overflow-hidden border border-outline',\n 'h-[98px] w-[52px] m-0 p-0 min-w-0 box-border',\n ],\n period: [\n 'relative',\n ...stateLayerBase,\n 'flex-1 inline-flex items-center justify-center min-h-12 h-12 w-full',\n 'border-0 bg-transparent',\n 'text-title-medium text-on-surface-variant cursor-pointer outline-none',\n 'data-[selected]:bg-secondary-container data-[selected]:text-on-secondary-container',\n '[&+&]:border-t [&+&]:border-outline',\n ],\n dial: [\n 'relative size-[256px] mt-[28px] p-0 min-w-0 border-0 rounded-full bg-surface-container-highest',\n ],\n dialNumber: [\n ...stateLayerBase,\n 'absolute -translate-x-1/2 -translate-y-1/2 inline-grid place-items-center size-12 rounded-full',\n 'border-0 bg-transparent',\n 'text-body-large text-on-surface cursor-pointer outline-none select-none',\n 'data-[selected]:bg-primary data-[selected]:text-on-primary',\n ],\n dialHand: [\n 'absolute left-1/2 top-[12%] h-[38%] w-0.5 origin-bottom bg-primary -translate-x-1/2 pointer-events-none',\n ],\n dialCenter: [\n 'absolute left-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary pointer-events-none',\n ],\n inputs: ['flex items-start gap-3'],\n inputBox: [\n 'w-24 h-20 rounded-small box-border text-center',\n 'bg-surface-container-highest text-on-surface text-display-large outline-none',\n 'border border-outline focus:border-2 focus:border-primary',\n '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n ],\n inputCaption: ['block mt-1 text-body-small text-on-surface-variant'],\n },\n});\n\nconst tp = timePickerTv();\nexport const TimePicker = createTimePicker(() => ({\n root: tp.root(),\n header: tp.header(),\n display: tp.display(),\n field: tp.field(),\n colon: tp.colon(),\n periods: tp.periods(),\n period: tp.period(),\n dial: tp.dial(),\n dialNumber: tp.dialNumber(),\n dialHand: tp.dialHand(),\n dialCenter: tp.dialCenter(),\n inputs: tp.inputs(),\n inputBox: tp.inputBox(),\n inputCaption: tp.inputCaption(),\n}));\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createToolbar } from '@m3-baseui/core';
|
|
3
3
|
import { tv as tv$1 } from 'tailwind-variants';
|
|
4
4
|
|
|
5
|
-
// src/toolbar.ts
|
|
5
|
+
// src/components/toolbar/toolbar.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/toolbar.ts
|
|
34
|
+
// src/components/toolbar/toolbar.ts
|
|
35
35
|
var toolbarTv = tv({
|
|
36
36
|
base: "inline-flex items-center justify-center gap-1 box-border rounded-full shadow-level3 [&_svg]:size-6",
|
|
37
37
|
variants: {
|
|
@@ -51,5 +51,5 @@ var Toolbar = createToolbar(
|
|
|
51
51
|
);
|
|
52
52
|
|
|
53
53
|
export { Toolbar, toolbarTv };
|
|
54
|
-
//# sourceMappingURL=
|
|
55
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tv.ts","../../../src/components/toolbar/toolbar.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;;;AC5BI,IAAM,YAAY,EAAA,CAAG;AAAA,EAC1B,IAAA,EAAM,oGAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,QAAA,EAAU,8CAAA;AAAA,MACV,OAAA,EACE;AAAA,KACJ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,UAAA,EAAY,oBAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,eAAA,EAAiB,EAAE,OAAA,EAAS,UAAA,EAAY,aAAa,YAAA;AACvD,CAAC;AAEM,IAAM,OAAA,GAAU,aAAA;AAAA,EAAc,CAAC,EAAE,OAAA,EAAS,WAAA,OAC/C,SAAA,CAAU,EAAE,OAAA,EAAS,WAAA,EAAa;AACpC","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 * toolbar.ts — tailwind-variants for the M3 Expressive Toolbar.\n *\n * A floating, full-radius pill (elevation level3) that groups action icons.\n * `standard` rides on surface-container; `vibrant` on primary-container — and\n * forces its interactive children (icon buttons / links) to the matching\n * on-primary-container foreground, since `IconButton` otherwise paints its own\n * `on-surface-variant`. The descendant selector outranks the button's own color\n * class but not its higher-specificity `data-[disabled]` rule, so disabled\n * actions still dim. `vertical` swaps the main axis and the fixed dimension.\n * Same DOM + `data-*` as the VE build.\n */\nimport { createToolbar } from '@m3-baseui/core';\nimport { tv } from '../../tv';\n\nexport const toolbarTv = tv({\n base: 'inline-flex items-center justify-center gap-1 box-border rounded-full shadow-level3 [&_svg]:size-6',\n variants: {\n variant: {\n standard: 'bg-surface-container text-on-surface-variant',\n vibrant:\n 'bg-primary-container text-on-primary-container [&_button]:text-on-primary-container [&_a]:text-on-primary-container',\n },\n orientation: {\n horizontal: 'flex-row h-16 px-2',\n vertical: 'flex-col w-16 py-2',\n },\n },\n defaultVariants: { variant: 'standard', orientation: 'horizontal' },\n});\n\nexport const Toolbar = createToolbar(({ variant, orientation }) =>\n toolbarTv({ variant, orientation }),\n);\nexport type { ToolbarProps, ToolbarVariant, ToolbarOrientation } from '@m3-baseui/core';\n"]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import * as _base_ui_react from '@base-ui/react';
|
|
3
|
+
import * as tailwind_variants from 'tailwind-variants';
|
|
4
|
+
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
|
|
5
|
+
import * as tailwind_merge from 'tailwind-merge';
|
|
6
|
+
|
|
7
|
+
declare const tooltipTv: tailwind_variants.TVReturnType<{
|
|
8
|
+
[key: string]: {
|
|
9
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
10
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
11
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
} | {
|
|
15
|
+
[x: string]: {
|
|
16
|
+
[x: string]: tailwind_merge.ClassNameValue | {
|
|
17
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
18
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
} | {}, {
|
|
22
|
+
popup: string[];
|
|
23
|
+
arrow: string[];
|
|
24
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
25
|
+
[key: string]: {
|
|
26
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
27
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
28
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
} | {}>, {
|
|
32
|
+
[key: string]: {
|
|
33
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
34
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
35
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
} | {}, {
|
|
39
|
+
popup: string[];
|
|
40
|
+
arrow: string[];
|
|
41
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
|
42
|
+
popup: string[];
|
|
43
|
+
arrow: string[];
|
|
44
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
45
|
+
[key: string]: {
|
|
46
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
47
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
48
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
} | {}>, unknown, unknown, undefined>>;
|
|
52
|
+
declare const richTooltipTv: tailwind_variants.TVReturnType<{
|
|
53
|
+
[key: string]: {
|
|
54
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
55
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
56
|
+
supportingText?: tailwind_merge.ClassNameValue;
|
|
57
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
58
|
+
subhead?: tailwind_merge.ClassNameValue;
|
|
59
|
+
actions?: tailwind_merge.ClassNameValue;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
} | {
|
|
63
|
+
[x: string]: {
|
|
64
|
+
[x: string]: tailwind_merge.ClassNameValue | {
|
|
65
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
66
|
+
supportingText?: tailwind_merge.ClassNameValue;
|
|
67
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
68
|
+
subhead?: tailwind_merge.ClassNameValue;
|
|
69
|
+
actions?: tailwind_merge.ClassNameValue;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
} | {}, {
|
|
73
|
+
popup: string[];
|
|
74
|
+
arrow: string[];
|
|
75
|
+
subhead: string[];
|
|
76
|
+
supportingText: string[];
|
|
77
|
+
actions: string[];
|
|
78
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
79
|
+
[key: string]: {
|
|
80
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
81
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
82
|
+
supportingText?: tailwind_merge.ClassNameValue;
|
|
83
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
84
|
+
subhead?: tailwind_merge.ClassNameValue;
|
|
85
|
+
actions?: tailwind_merge.ClassNameValue;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
} | {}>, {
|
|
89
|
+
[key: string]: {
|
|
90
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
91
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
92
|
+
supportingText?: tailwind_merge.ClassNameValue;
|
|
93
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
94
|
+
subhead?: tailwind_merge.ClassNameValue;
|
|
95
|
+
actions?: tailwind_merge.ClassNameValue;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
} | {}, {
|
|
99
|
+
popup: string[];
|
|
100
|
+
arrow: string[];
|
|
101
|
+
subhead: string[];
|
|
102
|
+
supportingText: string[];
|
|
103
|
+
actions: string[];
|
|
104
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
|
105
|
+
popup: string[];
|
|
106
|
+
arrow: string[];
|
|
107
|
+
subhead: string[];
|
|
108
|
+
supportingText: string[];
|
|
109
|
+
actions: string[];
|
|
110
|
+
}, undefined, tailwind_variants_dist_config_js.TVConfig<unknown, {
|
|
111
|
+
[key: string]: {
|
|
112
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
|
113
|
+
popup?: tailwind_merge.ClassNameValue;
|
|
114
|
+
supportingText?: tailwind_merge.ClassNameValue;
|
|
115
|
+
arrow?: tailwind_merge.ClassNameValue;
|
|
116
|
+
subhead?: tailwind_merge.ClassNameValue;
|
|
117
|
+
actions?: tailwind_merge.ClassNameValue;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
} | {}>, unknown, unknown, undefined>>;
|
|
121
|
+
declare const Tooltip: {
|
|
122
|
+
Provider: react.FC<_base_ui_react.TooltipProviderProps>;
|
|
123
|
+
Root: <Payload>(props: _base_ui_react.TooltipRoot.Props<Payload>) => react.JSX.Element;
|
|
124
|
+
Trigger: _base_ui_react.TooltipTrigger;
|
|
125
|
+
Portal: react.ForwardRefExoticComponent<Omit<_base_ui_react.TooltipPortalProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
126
|
+
Positioner: react.ForwardRefExoticComponent<Omit<_base_ui_react.TooltipPositionerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
127
|
+
Popup: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.TooltipPopupProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
128
|
+
Arrow: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.TooltipArrowProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
129
|
+
};
|
|
130
|
+
declare const RichTooltip: {
|
|
131
|
+
Root: typeof _base_ui_react.PopoverRoot;
|
|
132
|
+
Trigger: _base_ui_react.PopoverTrigger;
|
|
133
|
+
Portal: react.ForwardRefExoticComponent<Omit<_base_ui_react.PopoverPortalProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
134
|
+
Positioner: react.ForwardRefExoticComponent<Omit<_base_ui_react.PopoverPositionerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
135
|
+
Popup: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.PopoverPopupProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
136
|
+
Arrow: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.PopoverArrowProps, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
137
|
+
Subhead: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.PopoverTitleProps, "ref"> & react.RefAttributes<HTMLHeadingElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
138
|
+
SupportingText: react.ForwardRefExoticComponent<Omit<Omit<_base_ui_react.PopoverDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>, "ref"> & react.RefAttributes<unknown>>;
|
|
139
|
+
Actions: react.ForwardRefExoticComponent<react.HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
140
|
+
Close: react.ForwardRefExoticComponent<Omit<_base_ui_react.PopoverCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export { RichTooltip, Tooltip, richTooltipTv, tooltipTv };
|