@multiplatform.one/components 6.3.0 → 6.4.1
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/cjs/Alert/index.cjs +10 -0
- package/dist/cjs/Alert/index.native.js +10 -0
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/Carousel/index.cjs +35 -25
- package/dist/cjs/Carousel/index.native.js +31 -25
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +30 -16
- package/dist/cjs/DotIndicator/index.native.js +32 -17
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +10 -2
- package/dist/cjs/Tabs/index.native.js +22 -8
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/icons/index.cjs +2 -1
- package/dist/cjs/icons/index.native.js +1 -0
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +27 -19
- package/dist/cjs/layouts/tags.native.js +37 -26
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +3 -0
- package/dist/cjs/layouts/timeline.native.js +11 -2
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +9 -3
- package/dist/cjs/views/Gantt.native.js +14 -4
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +3 -2
- package/dist/cjs/views/ReportBuilder.native.js +3 -2
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/Alert/index.mjs +11 -1
- package/dist/esm/Alert/index.mjs.map +1 -1
- package/dist/esm/Alert/index.native.js +11 -1
- package/dist/esm/Alert/index.native.js.map +1 -1
- package/dist/esm/Carousel/index.mjs +36 -26
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +32 -26
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +32 -18
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +34 -19
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +12 -4
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +24 -10
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/icons/index.mjs +1 -0
- package/dist/esm/icons/index.mjs.map +1 -1
- package/dist/esm/icons/index.native.js +1 -0
- package/dist/esm/icons/index.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +29 -21
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +39 -28
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +4 -1
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +12 -3
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +9 -3
- package/dist/esm/views/Gantt.mjs.map +1 -1
- package/dist/esm/views/Gantt.native.js +14 -4
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +2 -1
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +2 -1
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/Alert/index.mjs +11 -1
- package/dist/jsx/Alert/index.mjs.map +1 -1
- package/dist/jsx/Alert/index.native.js +10 -0
- package/dist/jsx/Alert/index.native.js.map +1 -1
- package/dist/jsx/Carousel/index.mjs +36 -26
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +31 -25
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +32 -18
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +32 -17
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +12 -4
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +22 -8
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/icons/index.mjs +1 -0
- package/dist/jsx/icons/index.mjs.map +1 -1
- package/dist/jsx/icons/index.native.js +1 -0
- package/dist/jsx/icons/index.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +29 -21
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +37 -26
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +4 -1
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +11 -2
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +9 -3
- package/dist/jsx/views/Gantt.mjs.map +1 -1
- package/dist/jsx/views/Gantt.native.js +14 -4
- package/dist/jsx/views/Gantt.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +2 -1
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +3 -2
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/package.json +9 -9
- package/src/Alert/index.tsx +27 -1
- package/src/Carousel/index.tsx +35 -20
- package/src/DotIndicator/index.tsx +44 -18
- package/src/Tabs/index.tsx +19 -2
- package/src/icons/index.ts +4 -0
- package/src/layouts/tags-trigger.spec.tsx +23 -9
- package/src/layouts/tags.tsx +33 -20
- package/src/layouts/timeline.tsx +10 -0
- package/src/views/Calendar.tsx +6 -23
- package/src/views/Gantt.tsx +13 -5
- package/src/views/ReportBuilder.tsx +4 -1
- package/src/views/calendarMath.ts +9 -7
- package/src/views/ganttMath.ts +15 -12
- package/types/Alert/index.d.ts.map +1 -1
- package/types/Carousel/index.d.ts.map +1 -1
- package/types/DotIndicator/index.d.ts.map +1 -1
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/icons/index.d.ts +1 -0
- package/types/icons/index.d.ts.map +1 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/layouts/timeline.d.ts.map +1 -1
- package/types/views/Gantt.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts.map +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
1
|
+
import { MIN_PRESS_TARGET, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
2
|
import type React from "react";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
4
|
import type { GetProps } from "tamagui";
|
|
5
|
-
import { View, XStack, styled } from "tamagui";
|
|
5
|
+
import { View, XStack, getTokens, styled } from "tamagui";
|
|
6
6
|
import { componentColors } from "../componentColors";
|
|
7
7
|
import { withInterp } from "../shared/t";
|
|
8
8
|
|
|
@@ -52,20 +52,32 @@ const DotsContainer = styled(XStack, {
|
|
|
52
52
|
gap: "$2",
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
+
// DG-LAY-04 / D-02 press-floor: the painted dot stays tiny (6–10px) but the
|
|
56
|
+
// press target is a transparent wrapper floored at 44px tall via the house
|
|
57
|
+
// pressTarget* channel (grown box + negative outset). The horizontal target
|
|
58
|
+
// is pitch-limited: it extends only ~half the inter-dot gap each side so
|
|
59
|
+
// adjacent enlarged targets never overlap (overlapping targets are their own
|
|
60
|
+
// DG-LAY-04 defect — same trade WCAG 2.5.8 makes for dense dot strips).
|
|
61
|
+
const DotTarget = styled(View, {
|
|
62
|
+
name: "DotTarget",
|
|
63
|
+
alignItems: "center",
|
|
64
|
+
justifyContent: "center",
|
|
65
|
+
backgroundColor: "transparent",
|
|
66
|
+
focusVisibleStyle: {
|
|
67
|
+
outlineColor: "$outlineColor",
|
|
68
|
+
outlineWidth: 2,
|
|
69
|
+
outlineStyle: "solid",
|
|
70
|
+
outlineOffset: 1,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
|
|
55
74
|
const Dot = styled(View, {
|
|
56
75
|
name: "Dot",
|
|
57
76
|
borderRadius: 1000,
|
|
58
77
|
backgroundColor: componentColors.indicator.inactive,
|
|
59
|
-
cursor: "pointer",
|
|
60
78
|
hoverStyle: {
|
|
61
79
|
backgroundColor: componentColors.indicator.hover,
|
|
62
80
|
},
|
|
63
|
-
focusVisibleStyle: {
|
|
64
|
-
outlineColor: "$outlineColor",
|
|
65
|
-
outlineWidth: 2,
|
|
66
|
-
outlineStyle: "solid",
|
|
67
|
-
outlineOffset: 1,
|
|
68
|
-
},
|
|
69
81
|
variants: {
|
|
70
82
|
active: {
|
|
71
83
|
true: {
|
|
@@ -99,7 +111,6 @@ const Dot = styled(View, {
|
|
|
99
111
|
},
|
|
100
112
|
disabled: {
|
|
101
113
|
true: {
|
|
102
|
-
cursor: "not-allowed",
|
|
103
114
|
opacity: 0.5,
|
|
104
115
|
},
|
|
105
116
|
},
|
|
@@ -123,6 +134,13 @@ export function DotIndicator({
|
|
|
123
134
|
const geometry = dotGeometryMap[knobProps.sizeToken] ?? dotGeometryMap.$4;
|
|
124
135
|
const itemSize = variant === "bars" ? geometry.bar : geometry.dot;
|
|
125
136
|
|
|
137
|
+
// Horizontal slop is capped at just under half the resolved gap so two
|
|
138
|
+
// enlarged targets keep ≥1px of dead space between them.
|
|
139
|
+
const gapPx =
|
|
140
|
+
typeof gap === "number" ? gap : ((getTokens().space as any)?.[gap]?.val ?? 7);
|
|
141
|
+
const slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
|
|
142
|
+
const outsetY = Math.ceil((MIN_PRESS_TARGET - itemSize) / 2);
|
|
143
|
+
|
|
126
144
|
// No onChange means the indicator is read-only (informational), which is
|
|
127
145
|
// different from disabled (interactive but blocked)
|
|
128
146
|
const interactive = !disabled && !!onChange;
|
|
@@ -131,15 +149,14 @@ export function DotIndicator({
|
|
|
131
149
|
<DotsContainer gap={gap}>
|
|
132
150
|
{Array.from({ length: total }).map((_, index) => {
|
|
133
151
|
const isActive = index === activeIndex;
|
|
152
|
+
const dotWidth = isActive ? geometry.active : itemSize;
|
|
134
153
|
return (
|
|
135
|
-
<
|
|
154
|
+
<DotTarget
|
|
136
155
|
key={index}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
height={itemSize}
|
|
142
|
-
disabled={disabled}
|
|
156
|
+
width={dotWidth + slopX * 2}
|
|
157
|
+
minHeight={MIN_PRESS_TARGET}
|
|
158
|
+
marginHorizontal={-slopX}
|
|
159
|
+
marginVertical={-outsetY}
|
|
143
160
|
cursor={interactive ? "pointer" : disabled ? "not-allowed" : "default"}
|
|
144
161
|
onPress={interactive ? () => onChange?.(index) : undefined}
|
|
145
162
|
aria-label={withInterp(t("Go to item {{number}}"), { number: index + 1 })}
|
|
@@ -158,7 +175,16 @@ export function DotIndicator({
|
|
|
158
175
|
: disabled
|
|
159
176
|
? { role: "button" as const }
|
|
160
177
|
: undefined)}
|
|
161
|
-
|
|
178
|
+
>
|
|
179
|
+
<Dot
|
|
180
|
+
variant={variant}
|
|
181
|
+
active={isActive}
|
|
182
|
+
activeVariant={isActive ? variant : undefined}
|
|
183
|
+
width={dotWidth}
|
|
184
|
+
height={itemSize}
|
|
185
|
+
disabled={disabled}
|
|
186
|
+
/>
|
|
187
|
+
</DotTarget>
|
|
162
188
|
);
|
|
163
189
|
})}
|
|
164
190
|
</DotsContainer>
|
package/src/Tabs/index.tsx
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
+
MIN_PRESS_TARGET,
|
|
20
21
|
ensureKeyboardModalityTracking,
|
|
21
22
|
keyboardFocusRingProps,
|
|
22
23
|
useResolvedKnobs,
|
|
@@ -34,6 +35,7 @@ import {
|
|
|
34
35
|
View,
|
|
35
36
|
XStack,
|
|
36
37
|
YStack,
|
|
38
|
+
getTokens,
|
|
37
39
|
isWeb,
|
|
38
40
|
styled,
|
|
39
41
|
} from "tamagui";
|
|
@@ -302,6 +304,12 @@ export function Tabs({
|
|
|
302
304
|
const isUnderline = variant === "underline";
|
|
303
305
|
const indicatorTheme = (intent ?? "accent") as ThemeName;
|
|
304
306
|
const sizeToken = knobProps.sizeToken;
|
|
307
|
+
// DG-LAY-04 / D-02 press-floor: small size knobs ($2/$3) shrink the visual
|
|
308
|
+
// strip below 44 — the trigger box is floored at 44 via the house
|
|
309
|
+
// pressTarget* channel (minHeight + negative vertical outset keeps the
|
|
310
|
+
// strip's layout height at the knob size; hit area extends past the strip).
|
|
311
|
+
const sizePx = (getTokens().size as any)?.[sizeToken]?.val ?? MIN_PRESS_TARGET;
|
|
312
|
+
const triggerOutset = Math.max(0, Math.ceil((MIN_PRESS_TARGET - sizePx) / 2));
|
|
305
313
|
const fontSize = fontSizeMap[sizeToken] ?? "$3";
|
|
306
314
|
const gapToken = knobProps.gap.gap;
|
|
307
315
|
const radiusToken = knobProps.borderRadius.borderRadius;
|
|
@@ -332,9 +340,11 @@ export function Tabs({
|
|
|
332
340
|
) : (
|
|
333
341
|
<ThumbIndicator
|
|
334
342
|
x={activeLayout.x}
|
|
335
|
-
|
|
343
|
+
// The trigger's measured box includes the press-floor outset; the
|
|
344
|
+
// painted thumb keeps the knob-sized visual geometry.
|
|
345
|
+
y={activeLayout.y + triggerOutset}
|
|
336
346
|
width={activeLayout.width}
|
|
337
|
-
height={activeLayout.height}
|
|
347
|
+
height={Math.max(0, activeLayout.height - triggerOutset * 2)}
|
|
338
348
|
borderRadius={radiusToken}
|
|
339
349
|
{...(knobProps.elevation !== undefined ? { elevation: knobProps.elevation } : undefined)}
|
|
340
350
|
{...(transition ? { transition } : undefined)}
|
|
@@ -362,6 +372,11 @@ export function Tabs({
|
|
|
362
372
|
showsHorizontalScrollIndicator={false}
|
|
363
373
|
scrollEventThrottle={16}
|
|
364
374
|
style={maskStyle as never}
|
|
375
|
+
// The scroller clips vertically; pad the content by the press-floor
|
|
376
|
+
// outset (and pull the scroller back by the same amount) so the
|
|
377
|
+
// triggers' enlarged hit boxes are never clipped. Net layout: zero.
|
|
378
|
+
contentContainerStyle={{ paddingVertical: triggerOutset }}
|
|
379
|
+
marginVertical={-triggerOutset}
|
|
365
380
|
onScroll={(e) => {
|
|
366
381
|
scrollMetrics.current.offset = e.nativeEvent.contentOffset.x;
|
|
367
382
|
updateFades();
|
|
@@ -431,6 +446,8 @@ export function Tabs({
|
|
|
431
446
|
...(isDisabled ? { "aria-disabled": true } : undefined),
|
|
432
447
|
})}
|
|
433
448
|
height={sizeToken}
|
|
449
|
+
minHeight={MIN_PRESS_TARGET}
|
|
450
|
+
marginVertical={-triggerOutset}
|
|
434
451
|
onInteraction={handleInteraction}
|
|
435
452
|
opacity={isDisabled ? 0.4 : 1}
|
|
436
453
|
cursor={isDisabled ? "default" : "pointer"}
|
package/src/icons/index.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from "./CheckRegular";
|
|
2
2
|
export * from "./MinusRegular";
|
|
3
3
|
export * from "./lucide";
|
|
4
|
+
// Token-resolving icon wrapper (LC-53 GLYPH-SLOT): icon-only controls slot
|
|
5
|
+
// `themed(Icon)` elements and color them with bare theme keys ("red9"),
|
|
6
|
+
// instead of baseline-shifting Text wrappers around raw icons.
|
|
7
|
+
export * from "./themed";
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// Regression test for the Tags "Add Tag" trigger scale (post Tags→Chip
|
|
2
2
|
// consolidation): the trigger previously rendered as a Tamagui Button whose
|
|
3
3
|
// size token sets a fixed field height ($4 → 44px) — 2x the content-driven
|
|
4
|
-
// Chip pill (22px). The
|
|
4
|
+
// Chip pill (22px). The visual pill shares ChipFrame/ChipText, so its
|
|
5
5
|
// padding/font atomic classes must match the pills exactly and it must not
|
|
6
|
-
// carry a fixed height class.
|
|
6
|
+
// carry a fixed height class. Since the D-02 press-floor rollout the
|
|
7
|
+
// interactive trigger is a transparent wrapper floored at 44px (house
|
|
8
|
+
// pressTarget* channel); the chip-scale pill nests inside it.
|
|
7
9
|
// jsdom's getComputedStyle cannot cascade Tamagui's class-based CSS, so this
|
|
8
10
|
// asserts on the atomic classes (same approach as timeline-radius.spec.tsx).
|
|
9
11
|
import { cleanup, fireEvent, screen, waitFor } from "@testing-library/react";
|
|
@@ -37,23 +39,35 @@ function renderTags() {
|
|
|
37
39
|
return renderWithProviders(<Tags tags={tags} onAdd={vi.fn()} onRemove={vi.fn()} />);
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
/** The chip-scale visual pill nested inside the wrapper trigger. */
|
|
43
|
+
function triggerPillOf(trigger: HTMLElement): HTMLElement {
|
|
44
|
+
const pill = chipFrameOf(screen.getByText("Add Tag"));
|
|
45
|
+
if (!trigger.contains(pill)) throw new Error("trigger pill not inside trigger");
|
|
46
|
+
return pill;
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
describe("Tags Add Tag trigger (chip-scale)", () => {
|
|
41
|
-
it("trigger padding classes match the chip pill exactly", () => {
|
|
50
|
+
it("trigger pill padding classes match the chip pill exactly", () => {
|
|
42
51
|
renderTags();
|
|
43
52
|
const chip = chipFrameOf(screen.getByText("urgent"));
|
|
44
53
|
const trigger = screen.getByLabelText("Add Tag");
|
|
54
|
+
const pill = triggerPillOf(trigger);
|
|
45
55
|
const paddingPrefixes = ["_pt-", "_pb-", "_pl-", "_pr-"];
|
|
46
|
-
expect(classesByPrefix(
|
|
47
|
-
classesByPrefix(chip, paddingPrefixes),
|
|
48
|
-
);
|
|
56
|
+
expect(classesByPrefix(pill, paddingPrefixes)).toEqual(classesByPrefix(chip, paddingPrefixes));
|
|
49
57
|
});
|
|
50
58
|
|
|
51
|
-
it("trigger has no fixed height class (content-driven like the chip)", () => {
|
|
59
|
+
it("trigger pill has no fixed height class (content-driven like the chip)", () => {
|
|
52
60
|
renderTags();
|
|
53
61
|
const chip = chipFrameOf(screen.getByText("urgent"));
|
|
62
|
+
const pill = triggerPillOf(screen.getByLabelText("Add Tag"));
|
|
63
|
+
expect(classesByPrefix(pill, ["_h-"])).toEqual(classesByPrefix(chip, ["_h-"]));
|
|
64
|
+
expect(classesByPrefix(pill, ["_h-"])).toEqual([]);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("trigger wrapper carries the D-02 44px press-floor (minHeight class)", () => {
|
|
68
|
+
renderTags();
|
|
54
69
|
const trigger = screen.getByLabelText("Add Tag");
|
|
55
|
-
expect(classesByPrefix(trigger, ["
|
|
56
|
-
expect(classesByPrefix(trigger, ["_h-"])).toEqual([]);
|
|
70
|
+
expect(classesByPrefix(trigger, ["_mih-"]).length).toBeGreaterThan(0);
|
|
57
71
|
});
|
|
58
72
|
|
|
59
73
|
it("trigger label font size class matches the chip label", () => {
|
package/src/layouts/tags.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PlusIcon, TagIcon } from "@phosphor-icons/react";
|
|
2
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
|
+
import { pressTargetStyle, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
3
3
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { useTranslation } from "react-i18next";
|
|
5
5
|
import {
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
Popover,
|
|
11
11
|
ScrollView,
|
|
12
12
|
Text,
|
|
13
|
+
View,
|
|
13
14
|
XStack,
|
|
14
15
|
YStack,
|
|
15
16
|
type YStackProps,
|
|
@@ -388,22 +389,23 @@ export function Tags({
|
|
|
388
389
|
allowFlip
|
|
389
390
|
>
|
|
390
391
|
<Popover.Trigger asChild>
|
|
391
|
-
{/* Chip-scale
|
|
392
|
-
height/padding/font track the Chip pills
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
392
|
+
{/* Chip-scale visual (shares ChipFrame/ChipText size variants so its
|
|
393
|
+
height/padding/font track the Chip pills) wrapped in a
|
|
394
|
+
transparent press target floored at 44 tall (DG-LAY-04 / D-02
|
|
395
|
+
house pressTarget* channel — the pill itself stays chip-sized).
|
|
396
|
+
Horizontal slop is capped below half the $2 row gap so the
|
|
397
|
+
target never overlaps the adjacent chip / its dismiss zone. */}
|
|
398
|
+
<View
|
|
397
399
|
role="button"
|
|
398
400
|
aria-label={addTagLabel}
|
|
399
401
|
tabIndex={0}
|
|
400
402
|
cursor="pointer"
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
403
|
+
alignItems="center"
|
|
404
|
+
justifyContent="center"
|
|
405
|
+
{...pressTargetStyle()}
|
|
406
|
+
minWidth={undefined}
|
|
407
|
+
paddingHorizontal={3}
|
|
408
|
+
marginHorizontal={-3}
|
|
407
409
|
focusVisibleStyle={{
|
|
408
410
|
outlineColor: "$outlineColor",
|
|
409
411
|
outlineWidth: 2,
|
|
@@ -418,13 +420,24 @@ export function Tags({
|
|
|
418
420
|
}) as unknown as () => void
|
|
419
421
|
}
|
|
420
422
|
>
|
|
421
|
-
<
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
{
|
|
426
|
-
|
|
427
|
-
|
|
423
|
+
<ChipFrame
|
|
424
|
+
size={chipSize}
|
|
425
|
+
variant="outline"
|
|
426
|
+
backgroundColor="transparent"
|
|
427
|
+
{...knobProps.borderRadius}
|
|
428
|
+
borderColor={componentColors.interactive.border}
|
|
429
|
+
gap={compact ? 0 : "$1"}
|
|
430
|
+
hoverStyle={{ backgroundColor: componentColors.interactive.hover }}
|
|
431
|
+
pressStyle={{ backgroundColor: componentColors.interactive.active }}
|
|
432
|
+
>
|
|
433
|
+
<PlusIcon size={chipIconSize(chipSize)} />
|
|
434
|
+
{/* Compact is icon-only: a zero-width space still establishes the
|
|
435
|
+
chip text line box so the trigger height matches the pills. */}
|
|
436
|
+
<ChipText size={chipSize} color={componentColors.text.secondary}>
|
|
437
|
+
{compact ? "\u200B" : addTagLabel}
|
|
438
|
+
</ChipText>
|
|
439
|
+
</ChipFrame>
|
|
440
|
+
</View>
|
|
428
441
|
</Popover.Trigger>
|
|
429
442
|
|
|
430
443
|
<Popover.Content
|
package/src/layouts/timeline.tsx
CHANGED
|
@@ -12,8 +12,11 @@ import {
|
|
|
12
12
|
} from "@phosphor-icons/react";
|
|
13
13
|
import { useDirection } from "../hooks/useDirection";
|
|
14
14
|
import {
|
|
15
|
+
MIN_PRESS_TARGET,
|
|
15
16
|
formatAbsoluteDateTime,
|
|
16
17
|
formatRelativeTimestamp,
|
|
18
|
+
pressTargetHitSlop,
|
|
19
|
+
pressTargetStyle,
|
|
17
20
|
useResolvedKnobs,
|
|
18
21
|
} from "@multiplatform.one/theme";
|
|
19
22
|
import React, { useCallback, useMemo, useState } from "react";
|
|
@@ -748,9 +751,16 @@ export function Timeline({
|
|
|
748
751
|
)}
|
|
749
752
|
{showReplyAction && (
|
|
750
753
|
<XStack marginInlineStart={-8}>
|
|
754
|
+
{/* DG-LAY-04 / D-02 press-floor: the chromeless pill paints at
|
|
755
|
+
the $1/$2 token (20/28px) but the press box is floored at 44
|
|
756
|
+
via the house pressTarget* channel (grown transparent box +
|
|
757
|
+
negative outset + hitSlop) — layout height stays token-sized. */}
|
|
751
758
|
<Button
|
|
752
759
|
chromeless
|
|
753
760
|
size={compact ? "$1" : "$2"}
|
|
761
|
+
{...pressTargetStyle()}
|
|
762
|
+
marginVertical={-Math.ceil((MIN_PRESS_TARGET - (compact ? 20 : 28)) / 2)}
|
|
763
|
+
hitSlop={pressTargetHitSlop(compact ? 20 : 28)}
|
|
754
764
|
borderRadius={radiusToken}
|
|
755
765
|
opacity={0.8}
|
|
756
766
|
icon={<ReplyIcon size={compact ? 10 : 12} />}
|
package/src/views/Calendar.tsx
CHANGED
|
@@ -18,6 +18,10 @@ import {
|
|
|
18
18
|
type CalendarRange,
|
|
19
19
|
} from "./calendarMath";
|
|
20
20
|
import {
|
|
21
|
+
formatDayLong,
|
|
22
|
+
formatTimeOfDay,
|
|
23
|
+
getMonthNames,
|
|
24
|
+
getWeekdayNames,
|
|
21
25
|
hairline,
|
|
22
26
|
hairlineWidth,
|
|
23
27
|
pressTargetHitSlop,
|
|
@@ -389,34 +393,13 @@ const DAY_DISC_PX = 22;
|
|
|
389
393
|
/** Month-view chip visual floor (hit slop fills the 44px target, DG-LAY-04). */
|
|
390
394
|
const MONTH_CHIP_MIN_PX = 24;
|
|
391
395
|
|
|
392
|
-
function getWeekdayNames(): string[] {
|
|
393
|
-
const formatter = new Intl.DateTimeFormat(undefined, { weekday: "short" });
|
|
394
|
-
return Array.from({ length: 7 }, (_, i) => formatter.format(new Date(2004, 0, 4 + i)));
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
function getMonthNames(): string[] {
|
|
398
|
-
const formatter = new Intl.DateTimeFormat(undefined, { month: "long" });
|
|
399
|
-
return Array.from({ length: 12 }, (_, i) => formatter.format(new Date(2000, i, 1)));
|
|
400
|
-
}
|
|
401
|
-
|
|
402
396
|
function getHours(): number[] {
|
|
403
397
|
return Array.from({ length: 24 }, (_, i) => i);
|
|
404
398
|
}
|
|
405
399
|
|
|
400
|
+
/** Hour ticks speak the house time-of-day register without minutes ("2 PM"). */
|
|
406
401
|
function formatHour(hour: number): string {
|
|
407
|
-
|
|
408
|
-
return new Intl.DateTimeFormat(undefined, {
|
|
409
|
-
hour: "numeric",
|
|
410
|
-
hour12: true,
|
|
411
|
-
}).format(date);
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
function formatDayLong(date: Date): string {
|
|
415
|
-
return new Intl.DateTimeFormat(undefined, {
|
|
416
|
-
weekday: "long",
|
|
417
|
-
month: "long",
|
|
418
|
-
day: "numeric",
|
|
419
|
-
}).format(date);
|
|
402
|
+
return formatTimeOfDay(new Date(2000, 0, 1, hour, 0, 0), { minutes: false });
|
|
420
403
|
}
|
|
421
404
|
|
|
422
405
|
const weekdayNames = getWeekdayNames();
|
package/src/views/Gantt.tsx
CHANGED
|
@@ -8,6 +8,7 @@ import { Intent, hairline, hairlineWidth, useResolvedKnobs } from "@multiplatfor
|
|
|
8
8
|
import { Button } from "@multiplatform.one/forms";
|
|
9
9
|
import React, { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from "react";
|
|
10
10
|
import { useTranslation } from "react-i18next";
|
|
11
|
+
import { ScrollView as RNScrollView } from "react-native";
|
|
11
12
|
import { ScrollView, Text, XStack, YStack, isWeb, type YStackProps } from "tamagui";
|
|
12
13
|
import {
|
|
13
14
|
barGeometry,
|
|
@@ -29,6 +30,11 @@ import {
|
|
|
29
30
|
type GanttZoom,
|
|
30
31
|
} from "./ganttMath";
|
|
31
32
|
|
|
33
|
+
// The chart canvas needs real scroll events to drive the pinned axis follower,
|
|
34
|
+
// but Tamagui's styled ScrollView does not deliver onScroll on native — use the
|
|
35
|
+
// raw RN ScrollView there (web keeps the Tamagui scroller unchanged).
|
|
36
|
+
const CanvasScroller = (isWeb ? ScrollView : RNScrollView) as typeof ScrollView;
|
|
37
|
+
|
|
32
38
|
/**
|
|
33
39
|
* A Gantt task rendered as one row with a duration bar.
|
|
34
40
|
*/
|
|
@@ -1098,17 +1104,19 @@ export function GanttView({
|
|
|
1098
1104
|
))}
|
|
1099
1105
|
</YStack>
|
|
1100
1106
|
|
|
1101
|
-
{/* Timeline chart
|
|
1102
|
-
|
|
1107
|
+
{/* Timeline chart. On native the scroller is the raw RN ScrollView:
|
|
1108
|
+
Tamagui's styled ScrollView does not deliver onScroll there, and
|
|
1109
|
+
the pinned axis follower depends on it. */}
|
|
1110
|
+
<CanvasScroller
|
|
1103
1111
|
ref={hScrollRef}
|
|
1104
1112
|
horizontal
|
|
1105
|
-
flex
|
|
1113
|
+
{...(isWeb ? { flex: 1 } : null)}
|
|
1106
1114
|
scrollEnabled={!scrollLocked}
|
|
1107
1115
|
showsHorizontalScrollIndicator
|
|
1108
1116
|
onScroll={handleCanvasScroll}
|
|
1109
1117
|
scrollEventThrottle={16}
|
|
1110
1118
|
onLayout={handleCanvasLayout}
|
|
1111
|
-
style={scrollerDirection as any}
|
|
1119
|
+
style={(isWeb ? scrollerDirection : [{ flex: 1 }, scrollerDirection]) as any}
|
|
1112
1120
|
>
|
|
1113
1121
|
<YStack width={chartWidth} position="relative" {...{ "data-gantt-chart": "true" }}>
|
|
1114
1122
|
{/* Rows + grid + today line */}
|
|
@@ -1158,7 +1166,7 @@ export function GanttView({
|
|
|
1158
1166
|
)}
|
|
1159
1167
|
</YStack>
|
|
1160
1168
|
</YStack>
|
|
1161
|
-
</
|
|
1169
|
+
</CanvasScroller>
|
|
1162
1170
|
</XStack>
|
|
1163
1171
|
</ScrollView>
|
|
1164
1172
|
|
|
@@ -3,9 +3,12 @@ import { componentColors } from "../componentColors";
|
|
|
3
3
|
import { AsyncBoundary, AsyncSkeleton, resolveAsyncStatus } from "../layouts/AsyncBoundary";
|
|
4
4
|
import { EmptyState } from "../layouts/page";
|
|
5
5
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
6
|
+
// House Button (not raw tamagui): carries the DG-LAY-04 / D-02 ≥44px press
|
|
7
|
+
// floor — the raw tamagui Button rendered these toolbar actions at 28px.
|
|
8
|
+
import { Button } from "@multiplatform.one/forms";
|
|
6
9
|
import React, { useState, useMemo, useCallback } from "react";
|
|
7
10
|
import { useTranslation } from "react-i18next";
|
|
8
|
-
import {
|
|
11
|
+
import { Card, ScrollView, Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
9
12
|
|
|
10
13
|
// ============================================================================
|
|
11
14
|
// Types
|
|
@@ -10,8 +10,14 @@
|
|
|
10
10
|
* values — the component layer tweens between them with `knobProps.transition`
|
|
11
11
|
* (LC-25 CONTROL-SMOOTH-JUMP) while raw pointer tracking stays 1:1
|
|
12
12
|
* (A-GESTURE).
|
|
13
|
+
*
|
|
14
|
+
* Every visible/spoken date string here routes through the canonical
|
|
15
|
+
* registers in `@multiplatform.one/theme` (LC-12 render channel) — the
|
|
16
|
+
* calendar speaks the same date voice as tables, feeds and pickers.
|
|
13
17
|
*/
|
|
14
18
|
|
|
19
|
+
import { formatDayLong, formatTimeOfDay } from "@multiplatform.one/theme";
|
|
20
|
+
|
|
15
21
|
export const MINUTES_PER_DAY = 1440;
|
|
16
22
|
|
|
17
23
|
/** Wall-clock minutes since midnight for a date. */
|
|
@@ -201,9 +207,9 @@ export function moveFocusSlot(
|
|
|
201
207
|
|
|
202
208
|
// ── Formatting / accessible names ─────────────────────────────
|
|
203
209
|
|
|
204
|
-
/** "2:00 PM"
|
|
210
|
+
/** "2:00 PM" — the house time-of-day register. */
|
|
205
211
|
export function formatTimeShort(date: Date): string {
|
|
206
|
-
return
|
|
212
|
+
return formatTimeOfDay(date);
|
|
207
213
|
}
|
|
208
214
|
|
|
209
215
|
/** "2:00 PM – 3:30 PM" visible label used by resize / create sketches. */
|
|
@@ -217,11 +223,7 @@ export function formatTimeRangeLabel(start: Date, end: Date): string {
|
|
|
217
223
|
* Untimed events fall back to the day name alone.
|
|
218
224
|
*/
|
|
219
225
|
export function eventAccessibleLabel(event: { title: string; start: Date; end?: Date }): string {
|
|
220
|
-
const dayLabel =
|
|
221
|
-
weekday: "long",
|
|
222
|
-
month: "long",
|
|
223
|
-
day: "numeric",
|
|
224
|
-
}).format(event.start);
|
|
226
|
+
const dayLabel = formatDayLong(event.start);
|
|
225
227
|
if (!event.end || event.end.getTime() === event.start.getTime()) {
|
|
226
228
|
return `${event.title}, ${dayLabel}`;
|
|
227
229
|
}
|
package/src/views/ganttMath.ts
CHANGED
|
@@ -241,9 +241,12 @@ export interface GanttTick {
|
|
|
241
241
|
label?: string;
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
// Timeline labels ride the canonical date registers (LC-12 render channel).
|
|
245
|
+
// Ticks take `year: "never"` — the header states the year, and a widened
|
|
246
|
+
// "Mar 10, 2025" tick would collide with its neighbour.
|
|
247
|
+
const dayLabel = (date: Date) => formatDayOfMonth(date);
|
|
248
|
+
const monthDayLabel = (date: Date) => formatAbsoluteDate(date, { year: "never" });
|
|
249
|
+
const monthYearLabel = (date: Date) => formatMonthYear(date);
|
|
247
250
|
|
|
248
251
|
/**
|
|
249
252
|
* Axis ticks for a range at a zoom level.
|
|
@@ -271,7 +274,7 @@ export function generateTicks(
|
|
|
271
274
|
x,
|
|
272
275
|
date,
|
|
273
276
|
major: true,
|
|
274
|
-
label: monthEdge ?
|
|
277
|
+
label: monthEdge ? monthDayLabel(date) : dayLabel(date),
|
|
275
278
|
});
|
|
276
279
|
continue;
|
|
277
280
|
}
|
|
@@ -281,7 +284,7 @@ export function generateTicks(
|
|
|
281
284
|
x,
|
|
282
285
|
date,
|
|
283
286
|
major: weekStart,
|
|
284
|
-
label: weekStart ?
|
|
287
|
+
label: weekStart ? monthDayLabel(date) : undefined,
|
|
285
288
|
});
|
|
286
289
|
continue;
|
|
287
290
|
}
|
|
@@ -292,7 +295,7 @@ export function generateTicks(
|
|
|
292
295
|
x,
|
|
293
296
|
date,
|
|
294
297
|
major: monthStart,
|
|
295
|
-
label: monthStart ?
|
|
298
|
+
label: monthStart ? monthYearLabel(date) : undefined,
|
|
296
299
|
});
|
|
297
300
|
}
|
|
298
301
|
return ticks;
|
|
@@ -300,8 +303,8 @@ export function generateTicks(
|
|
|
300
303
|
|
|
301
304
|
/** Visible header label for the chart range: "Mar 2026 – Jun 2026". */
|
|
302
305
|
export function formatRangeLabel(range: GanttRange): string {
|
|
303
|
-
const start =
|
|
304
|
-
const end =
|
|
306
|
+
const start = monthYearLabel(range.start);
|
|
307
|
+
const end = monthYearLabel(addDays(range.end, -1));
|
|
305
308
|
return start === end ? start : `${start} – ${end}`;
|
|
306
309
|
}
|
|
307
310
|
|
|
@@ -312,8 +315,8 @@ export function formatRangeLabel(range: GanttRange): string {
|
|
|
312
315
|
export function ganttTaskAccessibleLabel(task: { title: string; start: Date; end: Date }): string {
|
|
313
316
|
const { startEdge, endEdge } = normalizeSpanEdges(task);
|
|
314
317
|
const lastDay = addDays(endEdge, -1);
|
|
315
|
-
const startLabel =
|
|
316
|
-
const endLabel =
|
|
318
|
+
const startLabel = monthDayLabel(startEdge);
|
|
319
|
+
const endLabel = monthDayLabel(
|
|
317
320
|
lastDay.getTime() >= startEdge.getTime() ? lastDay : startEdge,
|
|
318
321
|
);
|
|
319
322
|
return startLabel === endLabel
|
|
@@ -325,8 +328,8 @@ export function ganttTaskAccessibleLabel(task: { title: string; start: Date; end
|
|
|
325
328
|
export function formatSpanLabel(span: GanttSpan): string {
|
|
326
329
|
const { startEdge, endEdge } = normalizeSpanEdges(span);
|
|
327
330
|
const lastDay = addDays(endEdge, -1);
|
|
328
|
-
const startLabel =
|
|
329
|
-
const endLabel =
|
|
331
|
+
const startLabel = monthDayLabel(startEdge);
|
|
332
|
+
const endLabel = monthDayLabel(
|
|
330
333
|
lastDay.getTime() >= startEdge.getTime() ? lastDay : startEdge,
|
|
331
334
|
);
|
|
332
335
|
return startLabel === endLabel ? startLabel : `${startLabel} – ${endLabel}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Alert/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Alert/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAYjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACxF,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uBAAuB;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsBD,QAAA,MAAM,UAAU;;;6CAQd,CAAC;AAgMH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CAOtC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Carousel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,QAAQ,EAAmC,MAAM,SAAS,CAAC;AAOzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,QAAA,MAAM,iBAAiB,kPAKrB,CAAC;AAEH,QAAA,MAAM,aAAa,kPAGjB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Carousel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,QAAQ,EAAmC,MAAM,SAAS,CAAC;AAOzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,QAAA,MAAM,iBAAiB,kPAKrB,CAAC;AAEH,QAAA,MAAM,aAAa,kPAGjB,CAAC;AAuDH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,UAAiB,EACjB,QAAe,EACf,QAAY,EACZ,IAAY,EACZ,GAAG,EAAE,OAAO,EACZ,aAAa,EACb,YAAgB,GACjB,EAAE,aAAa,2CA4Lf;yBArMe,QAAQ;;;AA2MxB,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DotIndicator/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOxC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qBAAqB;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsBD,QAAA,MAAM,aAAa;;;6CAKjB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DotIndicator/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOxC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qBAAqB;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsBD,QAAA,MAAM,aAAa;;;6CAKjB,CAAC;AAqBH,QAAA,MAAM,GAAG;;;;;6CA4CP,CAAC;AAIH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAgB,EAChB,GAAG,EAAE,OAAO,EACZ,QAAgB,GACjB,EAAE,iBAAiB,2CA+DnB;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAChE,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Tabs/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Tabs/index.tsx"],"names":[],"mappings":"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"}
|
package/types/icons/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AAIzB,cAAc,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/layouts/tags.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/layouts/tags.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAWL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAQjB;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC;IACxE,sBAAsB;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAEhB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IAExB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,uDAAuD;IACvD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAElC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,OAAO,EACZ,cAAc,EAAE,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;KAAE,KAC9B,KAAK,CAAC,SAAS,CAAC;IAErB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qEAAqE;IACrE,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;QACtC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;KAC9C,CAAC;IACF,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,WAAgB,EAChB,KAAK,EACL,QAAgB,EAChB,OAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAgB,EAChB,YAAmB,EACnB,OAAe,EACf,OAAkB,EAClB,KAAK,EAAE,SAAS,EAChB,MAAW,EACX,WAAW,EAAE,eAAe,EAC5B,GAAG,UAAU,EACd,EAAE,SAAS,2CA6UX"}
|