cleanplate 0.3.27 → 0.3.29

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/CHANGELOG.md CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  ### Added
6
6
 
7
+ - **`Drawer`**: slide-in overlay panel (`placement`, mobile bottom sheet at ≤768px, optional header/footer, `dataTestId`). See `docs/Drawer.md`.
7
8
  - **`FeedbackState`**: unified empty/error region component (`variant`, consumer `illustration` URL or `icon`, `primaryAction` / `secondaryAction`, `onRetry`, `errorDetails`). See `docs/FeedbackState.md`.
8
9
 
9
10
  ### Breaking
package/README.md CHANGED
@@ -137,6 +137,7 @@ import { Icon } from "cleanplate";
137
137
  | Avatar | User initials, image, or icon |
138
138
  | Badge | Status labels, tags |
139
139
  | BottomSheet | Slide-up panel |
140
+ | Drawer | Edge slide-in panel; bottom sheet on mobile |
140
141
  | BreadCrumb | Navigation trail |
141
142
  | Button | Actions and buttons |
142
143
  | ConfirmDialog | Confirmation modals |
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAef,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAO7C,uFAAuF;AACvF,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,yBAAyB;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;IACvC,mFAAmF;IACnF,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA6CD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2NrC,CAAC;AAIF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAef,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAU7C,uFAAuF;AACvF,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,yBAAyB;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;IACvC,mFAAmF;IACnF,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA6CD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2NrC,CAAC;AAIF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+ import { SPACING_OPTIONS } from "../../constants/common";
3
+ /** Frozen breakpoint: matches Select, Date, Table mobile behavior. */
4
+ export declare const DRAWER_MOBILE_SHEET_MEDIA = "(max-width: 768px)";
5
+ export type DrawerPlacement = "left" | "right" | "top" | "bottom";
6
+ export type DrawerSize = "small" | "medium" | "large" | "full";
7
+ export type SpacingOption = (typeof SPACING_OPTIONS)[number];
8
+ export type DrawerMargin = string | SpacingOption[];
9
+ export interface DrawerProps {
10
+ /** Drawer body content */
11
+ children: React.ReactNode;
12
+ /** Whether the drawer is visible */
13
+ isOpen?: boolean;
14
+ /** Called when the drawer should close */
15
+ onClose?: () => void;
16
+ /** Edge the drawer slides from on desktop (≥768px); mobile always uses bottom sheet */
17
+ placement?: DrawerPlacement;
18
+ /** Panel size preset */
19
+ size?: DrawerSize;
20
+ /** Title displayed in the drawer header */
21
+ title?: string;
22
+ /** Whether to show the close (X) button */
23
+ showCloseButton?: boolean;
24
+ /** Whether clicking the overlay closes the drawer */
25
+ closeOnOverlayClick?: boolean;
26
+ /** Whether pressing Escape closes the drawer */
27
+ closeOnEscape?: boolean;
28
+ /** Margin spacing (suffix or array of spacing suffixes; component adds m- prefix) */
29
+ margin?: DrawerMargin;
30
+ /** Additional class names for the drawer panel */
31
+ className?: string;
32
+ /** Additional class names for the overlay */
33
+ overlayClassName?: string;
34
+ /** Additional class names for the content wrapper */
35
+ contentClassName?: string;
36
+ /** Additional class names for the header row */
37
+ headerClassName?: string;
38
+ /** Additional class names for the body region */
39
+ bodyClassName?: string;
40
+ /** Additional class names for the footer row */
41
+ footerClassName?: string;
42
+ /** Accessible name when no title is provided */
43
+ ariaLabel?: string;
44
+ /** Label for the primary footer button */
45
+ primaryButtonLabel?: string;
46
+ /** Called when the primary footer button is clicked */
47
+ onPrimaryButtonClick?: () => void;
48
+ /** Label for the secondary footer button */
49
+ secondaryButtonLabel?: string;
50
+ /** Called when the secondary footer button is clicked */
51
+ onSecondaryButtonClick?: () => void;
52
+ /**
53
+ * Root `data-testid` on the dialog panel. When set, related elements also get
54
+ * suffixed ids: `-overlay`, `-header`, `-title`, `-close`, `-body`, `-footer`,
55
+ * `-primary`, `-secondary`.
56
+ */
57
+ dataTestId?: string;
58
+ }
59
+ declare const Drawer: React.FC<DrawerProps>;
60
+ export default Drawer;
61
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAiBzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,EAAE,CAAC;AAoEpD,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uFAAuF;IACvF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,wBAAwB;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qFAAqF;IACrF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2MjC,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default } from "./Drawer";
2
+ export type { DrawerProps, DrawerPlacement, DrawerSize, DrawerMargin, SpacingOption, } from "./Drawer";
3
+ export { DRAWER_MOBILE_SHEET_MEDIA } from "./Drawer";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC"}