@divayth/brick-ui 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +43 -2
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +27 -0
  5. package/dist/lib/index.d.ts +2 -0
  6. package/dist/lib/index.d.ts.map +1 -0
  7. package/dist/lib/sizes.d.ts +2 -0
  8. package/dist/lib/sizes.d.ts.map +1 -0
  9. package/dist/styles.css +1 -0
  10. package/dist/ui/Accordion/Accordion.d.ts +8 -0
  11. package/dist/ui/Accordion/Accordion.d.ts.map +1 -0
  12. package/dist/ui/Accordion/Accordion.js +42 -0
  13. package/dist/ui/Accordion/Accordion.module.css.js +13 -0
  14. package/dist/ui/Alert/Alert.d.ts +8 -0
  15. package/dist/ui/Alert/Alert.d.ts.map +1 -0
  16. package/dist/ui/Alert/Alert.js +38 -0
  17. package/dist/ui/Button/Button.d.ts +21 -0
  18. package/dist/ui/Button/Button.d.ts.map +1 -0
  19. package/dist/ui/Button/Button.js +64 -0
  20. package/dist/ui/Button/Button.module.css.js +33 -0
  21. package/dist/ui/Card/Card.d.ts +4 -0
  22. package/dist/ui/Card/Card.d.ts.map +1 -0
  23. package/dist/ui/Card/Card.js +20 -0
  24. package/dist/ui/Card/Card.module.css.js +9 -0
  25. package/dist/ui/Chip/Chip.d.ts +14 -0
  26. package/dist/ui/Chip/Chip.d.ts.map +1 -0
  27. package/dist/ui/Chip/Chip.js +45 -0
  28. package/dist/ui/Chip/Chip.module.css.js +23 -0
  29. package/dist/ui/CircularLoading/CircularLoading.d.ts +8 -0
  30. package/dist/ui/CircularLoading/CircularLoading.d.ts.map +1 -0
  31. package/dist/ui/CircularLoading/CircularLoading.js +30 -0
  32. package/dist/ui/CircularLoading/CircularLoading.module.css.js +9 -0
  33. package/dist/ui/Flex/Flex.d.ts +10 -0
  34. package/dist/ui/Flex/Flex.d.ts.map +1 -0
  35. package/dist/ui/Flex/Flex.js +29 -0
  36. package/dist/ui/Flex/constants.d.ts +30 -0
  37. package/dist/ui/Flex/constants.d.ts.map +1 -0
  38. package/dist/ui/Flex/constants.js +27 -0
  39. package/dist/ui/Grid/Grid.d.ts +6 -0
  40. package/dist/ui/Grid/Grid.d.ts.map +1 -0
  41. package/dist/ui/Grid/Grid.js +9 -0
  42. package/dist/ui/Grid/Grid.module.css.js +11 -0
  43. package/dist/ui/Grid/Grid.types.d.ts +21 -0
  44. package/dist/ui/Grid/Grid.types.d.ts.map +1 -0
  45. package/dist/ui/Grid/GridItem.d.ts +3 -0
  46. package/dist/ui/Grid/GridItem.d.ts.map +1 -0
  47. package/dist/ui/Grid/GridItem.js +48 -0
  48. package/dist/ui/Grid/GridRoot.d.ts +3 -0
  49. package/dist/ui/Grid/GridRoot.d.ts.map +1 -0
  50. package/dist/ui/Grid/GridRoot.js +71 -0
  51. package/dist/ui/Grid/utils.d.ts +6 -0
  52. package/dist/ui/Grid/utils.d.ts.map +1 -0
  53. package/dist/ui/Grid/utils.js +21 -0
  54. package/dist/ui/IconButton/IconButton.d.ts +19 -0
  55. package/dist/ui/IconButton/IconButton.d.ts.map +1 -0
  56. package/dist/ui/IconButton/IconButton.js +56 -0
  57. package/dist/ui/IconButton/IconButton.module.css.js +29 -0
  58. package/dist/ui/ProgressBar/ProgressBar.d.ts +12 -0
  59. package/dist/ui/ProgressBar/ProgressBar.d.ts.map +1 -0
  60. package/dist/ui/ProgressBar/ProgressBar.js +34 -0
  61. package/dist/ui/Skeleton/Skeleton.d.ts +8 -0
  62. package/dist/ui/Skeleton/Skeleton.d.ts.map +1 -0
  63. package/dist/ui/Skeleton/Skeleton.js +14 -0
  64. package/dist/ui/Skeleton/Skeleton.module.css.js +7 -0
  65. package/dist/ui/Text/Text.d.ts +30 -0
  66. package/dist/ui/Text/Text.d.ts.map +1 -0
  67. package/dist/ui/Text/Text.js +39 -0
  68. package/dist/ui/index.d.ts +13 -0
  69. package/dist/ui/index.d.ts.map +1 -0
  70. package/package.json +53 -4
@@ -0,0 +1,30 @@
1
+ import { type Size } from "../../lib/sizes.js";
2
+ export declare const ALIGN_ITEMS_SX: {
3
+ readonly stretch: "items-stretch";
4
+ readonly center: "items-center";
5
+ readonly start: "items-start";
6
+ readonly end: "items-end";
7
+ };
8
+ export declare const JUSTIFY_CONTENT_SX: {
9
+ readonly start: "justify-start";
10
+ readonly center: "justify-center";
11
+ readonly end: "justify-end";
12
+ readonly between: "justify-between";
13
+ };
14
+ export declare const DIRECTION_SX: {
15
+ readonly row: "flex-row";
16
+ readonly col: "flex-col";
17
+ };
18
+ export declare const GAP_SX: {
19
+ readonly none: "gap-0";
20
+ readonly xs: "gap-1";
21
+ readonly sm: "gap-2";
22
+ readonly md: "gap-4";
23
+ readonly lg: "gap-6";
24
+ readonly xl: "gap-8";
25
+ };
26
+ export type AlignItemsType = keyof typeof ALIGN_ITEMS_SX;
27
+ export type JustifayContentType = keyof typeof JUSTIFY_CONTENT_SX;
28
+ export type DirectionType = keyof typeof DIRECTION_SX;
29
+ export type GapType = Size;
30
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ui/Flex/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;;CAOT,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,cAAc,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,YAAY,CAAC;AAEtD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC"}
@@ -0,0 +1,27 @@
1
+ const t = {
2
+ stretch: "items-stretch",
3
+ center: "items-center",
4
+ start: "items-start",
5
+ end: "items-end"
6
+ }, e = {
7
+ start: "justify-start",
8
+ center: "justify-center",
9
+ end: "justify-end",
10
+ between: "justify-between"
11
+ }, s = {
12
+ row: "flex-row",
13
+ col: "flex-col"
14
+ }, n = {
15
+ none: "gap-0",
16
+ xs: "gap-1",
17
+ sm: "gap-2",
18
+ md: "gap-4",
19
+ lg: "gap-6",
20
+ xl: "gap-8"
21
+ };
22
+ export {
23
+ t as ALIGN_ITEMS_SX,
24
+ s as DIRECTION_SX,
25
+ n as GAP_SX,
26
+ e as JUSTIFY_CONTENT_SX
27
+ };
@@ -0,0 +1,6 @@
1
+ export type { GridGap, GridItemProps, GridItemSize, GridRootProps, ResponsiveValue, } from "./Grid.types.js";
2
+ export declare const Grid: {
3
+ Root: ({ columns, gap, rowGap, columnGap, align, justify, className, style, children, ...props }: import("./Grid.types.js").GridRootProps) => import("react").JSX.Element;
4
+ Item: ({ size, offset, order, align, className, style, children, ...props }: import("./Grid.types.js").GridItemProps) => import("react").JSX.Element;
5
+ };
6
+ //# sourceMappingURL=Grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/ui/Grid/Grid.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,IAAI;;;CAGhB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { GridItem as o } from "./GridItem.js";
2
+ import { GridRoot as r } from "./GridRoot.js";
3
+ const i = {
4
+ Root: r,
5
+ Item: o
6
+ };
7
+ export {
8
+ i as Grid
9
+ };
@@ -0,0 +1,11 @@
1
+ const t = "_root_1l5eq_2", o = "_item_1l5eq_16", _ = "_fit_1l5eq_30", e = {
2
+ root: t,
3
+ item: o,
4
+ fit: _
5
+ };
6
+ export {
7
+ e as default,
8
+ _ as fit,
9
+ o as item,
10
+ t as root
11
+ };
@@ -0,0 +1,21 @@
1
+ import type { ComponentProps } from "react";
2
+ import type { AlignItemsType, JustifayContentType } from "../Flex/constants.js";
3
+ import type { Size } from "../../lib/sizes.js";
4
+ export type GridGap = Size | "none";
5
+ export type ResponsiveValue<T> = T | Partial<Record<Size, T>>;
6
+ export type GridItemSize = ResponsiveValue<number> | "fit" | "grow";
7
+ export interface GridRootProps extends ComponentProps<"div"> {
8
+ columns?: number;
9
+ gap?: ResponsiveValue<GridGap>;
10
+ rowGap?: ResponsiveValue<GridGap>;
11
+ columnGap?: ResponsiveValue<GridGap>;
12
+ align?: AlignItemsType;
13
+ justify?: JustifayContentType;
14
+ }
15
+ export interface GridItemProps extends ComponentProps<"div"> {
16
+ size?: GridItemSize;
17
+ offset?: ResponsiveValue<number>;
18
+ order?: ResponsiveValue<number>;
19
+ align?: ResponsiveValue<AlignItemsType | "auto">;
20
+ }
21
+ //# sourceMappingURL=Grid.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.types.d.ts","sourceRoot":"","sources":["../../../src/ui/Grid/Grid.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC1D,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,eAAe,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;CAClD"}
@@ -0,0 +1,3 @@
1
+ import type { GridItemProps } from "./Grid.types.js";
2
+ export declare const GridItem: ({ size, offset, order, align, className, style, children, ...props }: GridItemProps) => import("react").JSX.Element;
3
+ //# sourceMappingURL=GridItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridItem.d.ts","sourceRoot":"","sources":["../../../src/ui/Grid/GridItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAarD,eAAO,MAAM,QAAQ,GAAI,sEAStB,aAAa,gCAyBf,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { jsx as g } from "react/jsx-runtime";
2
+ import p from "clsx";
3
+ import { getResponsiveCssVariables as e } from "./utils.js";
4
+ import o from "./Grid.module.css.js";
5
+ const u = {
6
+ auto: "auto",
7
+ stretch: "stretch",
8
+ center: "center",
9
+ start: "flex-start",
10
+ end: "flex-end"
11
+ }, G = ({
12
+ size: r = "grow",
13
+ offset: s = 0,
14
+ order: m = 0,
15
+ align: a = "auto",
16
+ className: c,
17
+ style: d,
18
+ children: f,
19
+ ...n
20
+ }) => {
21
+ const i = r === "fit", l = i ? 1 : r;
22
+ return /* @__PURE__ */ g(
23
+ "div",
24
+ {
25
+ ...n,
26
+ className: p(o.item, i && o.fit, c),
27
+ style: {
28
+ ...e("grid-item-size", l),
29
+ ...e(
30
+ "grid-item-offset",
31
+ s,
32
+ (t) => t === 0 ? "auto" : t + 1
33
+ ),
34
+ ...e("grid-item-order", m),
35
+ ...e(
36
+ "grid-item-align",
37
+ a,
38
+ (t) => u[t]
39
+ ),
40
+ ...d
41
+ },
42
+ children: f
43
+ }
44
+ );
45
+ };
46
+ export {
47
+ G as GridItem
48
+ };
@@ -0,0 +1,3 @@
1
+ import type { GridRootProps } from "./Grid.types.js";
2
+ export declare const GridRoot: ({ columns, gap, rowGap, columnGap, align, justify, className, style, children, ...props }: GridRootProps) => import("react").JSX.Element;
3
+ //# sourceMappingURL=GridRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridRoot.d.ts","sourceRoot":"","sources":["../../../src/ui/Grid/GridRoot.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,iBAAiB,CAAC;AAgFzB,eAAO,MAAM,QAAQ,GAAI,2FAWtB,aAAa,gCA+Bf,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { jsx as h } from "react/jsx-runtime";
2
+ import { Children as w, isValidElement as C, cloneElement as S } from "react";
3
+ import b from "clsx";
4
+ import { getResponsiveCssVariables as p, GRID_GAP_VALUES as d } from "./utils.js";
5
+ import { GridItem as z } from "./GridItem.js";
6
+ import I from "./Grid.module.css.js";
7
+ const v = {
8
+ stretch: "stretch",
9
+ center: "center",
10
+ start: "flex-start",
11
+ end: "flex-end"
12
+ }, y = {
13
+ start: "flex-start",
14
+ center: "center",
15
+ end: "flex-end",
16
+ between: "space-between"
17
+ }, g = (t) => t === "grow" || t === "fit" ? 0 : typeof t == "number" ? t : t?.md ?? 1, G = (t, a) => {
18
+ const m = w.toArray(t), n = m.filter(
19
+ (e) => C(e) && e.type === z
20
+ );
21
+ if (!n.some(({ props: e }) => e.size === "fit" || e.size === "grow" ? !0 : !Number.isInteger(g(e.size))))
22
+ return { children: t, templateColumns: void 0 };
23
+ const s = n.filter(
24
+ ({ props: e }) => e.size === "grow"
25
+ ).length, u = n.reduce(
26
+ (e, { props: f }) => e + g(f.size),
27
+ 0
28
+ ), o = Math.max(s, a - u), c = s > 0 ? o / s : 0, r = [], l = m.map((e) => !C(e) || e.type !== z ? e : (e.props.size === "fit" ? r.push("max-content") : e.props.size === "grow" ? r.push(`minmax(0, ${c}fr)`) : r.push(`minmax(0, ${g(e.props.size)}fr)`), S(e, { size: 1 })));
29
+ return s === 0 && o > 0 && r.push(`minmax(0, ${o}fr)`), {
30
+ children: l,
31
+ templateColumns: r.join(" ")
32
+ };
33
+ }, j = ({
34
+ columns: t = 12,
35
+ gap: a = "sm",
36
+ rowGap: m,
37
+ columnGap: n,
38
+ align: x = "stretch",
39
+ justify: s = "start",
40
+ className: u,
41
+ style: o,
42
+ children: c,
43
+ ...r
44
+ }) => {
45
+ const l = Math.max(1, t), e = G(c, l), f = {
46
+ "--grid-columns": l,
47
+ "--grid-align": v[x],
48
+ "--grid-justify": y[s],
49
+ gridTemplateColumns: e.templateColumns,
50
+ ...p(
51
+ "grid-gap",
52
+ a,
53
+ (i) => d[i]
54
+ ),
55
+ ...p(
56
+ "grid-row-gap",
57
+ m,
58
+ (i) => d[i]
59
+ ),
60
+ ...p(
61
+ "grid-column-gap",
62
+ n,
63
+ (i) => d[i]
64
+ ),
65
+ ...o
66
+ };
67
+ return /* @__PURE__ */ h("div", { ...r, className: b(I.root, u), style: f, children: e.children });
68
+ };
69
+ export {
70
+ j as GridRoot
71
+ };
@@ -0,0 +1,6 @@
1
+ import type { CSSProperties } from "react";
2
+ import type { GridGap, ResponsiveValue } from "./Grid.types.js";
3
+ export type GridCssVariables = CSSProperties & Record<`--${string}`, string | number | undefined>;
4
+ export declare const GRID_GAP_VALUES: Record<GridGap, string>;
5
+ export declare const getResponsiveCssVariables: <T>(name: string, value: ResponsiveValue<T> | undefined, transform?: (entry: T) => string | number) => GridCssVariables;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/Grid/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGhE,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAC1C,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAIrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAOnD,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,EACzC,MAAM,MAAM,EACZ,OAAO,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,EACrC,YAAW,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,MAAiC,KAClE,gBAeF,CAAC"}
@@ -0,0 +1,21 @@
1
+ const c = ["xs", "sm", "md", "lg", "xl"], i = {
2
+ none: "0rem",
3
+ xs: "0.25rem",
4
+ sm: "0.5rem",
5
+ md: "1rem",
6
+ lg: "1.5rem",
7
+ xl: "2rem"
8
+ }, d = (s, e, n = (r) => String(r)) => {
9
+ if (e === void 0) return {};
10
+ if (typeof e != "object" || e === null)
11
+ return { [`--${s}-base`]: n(e) };
12
+ const r = e;
13
+ return c.reduce((t, o) => {
14
+ const m = r[o];
15
+ return m !== void 0 && (t[`--${s}-${o}`] = n(m)), t;
16
+ }, {});
17
+ };
18
+ export {
19
+ i as GRID_GAP_VALUES,
20
+ d as getResponsiveCssVariables
21
+ };
@@ -0,0 +1,19 @@
1
+ import type { AriaAttributes, ComponentPropsWithRef, ElementType, ReactNode } from 'react';
2
+ import type { Size } from '../../lib/sizes.js';
3
+ export type IconButtonColor = 'primary' | 'secondary' | 'danger';
4
+ type IconButtonOwnProps<T extends ElementType> = {
5
+ color?: IconButtonColor;
6
+ size?: Size;
7
+ isLoading?: boolean;
8
+ disabled?: boolean;
9
+ type?: 'button' | 'submit' | 'reset';
10
+ component?: T;
11
+ children?: ReactNode;
12
+ className?: string;
13
+ 'aria-disabled'?: AriaAttributes['aria-disabled'];
14
+ 'aria-busy'?: AriaAttributes['aria-busy'];
15
+ };
16
+ export type IconButtonProps<T extends ElementType = 'button'> = IconButtonOwnProps<T> & Omit<ComponentPropsWithRef<T>, keyof IconButtonOwnProps<T>>;
17
+ export declare const IconButton: <T extends ElementType = "button">({ color, size, disabled, isLoading, component, children, className, type, onClick, onKeyDown, tabIndex, "aria-disabled": ariaDisabled, "aria-busy": ariaBusy, ...props }: IconButtonProps<T>) => import("react").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=IconButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../src/ui/IconButton/IconButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjE,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI;IAC/C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,IAC1D,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,WAAW,GAAG,QAAQ,EAAE,0KAI1D,eAAe,CAAC,CAAC,CAAC,gCA8BpB,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { jsxs as g, jsx as l } from "react/jsx-runtime";
3
+ import k from "clsx";
4
+ import { CircularLoading as N } from "../CircularLoading/CircularLoading.js";
5
+ import a from "./IconButton.module.css.js";
6
+ const P = ({
7
+ color: m = "primary",
8
+ size: n = "md",
9
+ disabled: p = !1,
10
+ isLoading: r = !1,
11
+ component: c,
12
+ children: d,
13
+ className: u,
14
+ type: b = "button",
15
+ onClick: f,
16
+ onKeyDown: y,
17
+ tabIndex: h,
18
+ "aria-disabled": x,
19
+ "aria-busy": C,
20
+ ...D
21
+ }) => {
22
+ const s = c || "button", o = p || r, i = s === "button", e = typeof s != "string";
23
+ return /* @__PURE__ */ g(
24
+ s,
25
+ {
26
+ ...D,
27
+ type: i || e ? b : void 0,
28
+ disabled: i || e ? o : void 0,
29
+ "aria-disabled": o || x,
30
+ "aria-busy": r || C,
31
+ tabIndex: !i && o ? -1 : h,
32
+ className: k(a.root, a[m], a[n], { [a.disabled]: o }, u),
33
+ onClick: (t) => {
34
+ if (o) {
35
+ t.preventDefault(), t.stopPropagation();
36
+ return;
37
+ }
38
+ f?.(t);
39
+ },
40
+ onKeyDown: (t) => {
41
+ if (o && (t.key === "Enter" || t.key === " ")) {
42
+ t.preventDefault(), t.stopPropagation();
43
+ return;
44
+ }
45
+ y?.(t);
46
+ },
47
+ children: [
48
+ /* @__PURE__ */ l("span", { className: a.content, style: { opacity: r ? 0 : 1 }, children: d }),
49
+ r && /* @__PURE__ */ l(N, { size: n, style: { width: "1em", height: "1em" }, className: a.loading, "aria-hidden": "true" })
50
+ ]
51
+ }
52
+ );
53
+ };
54
+ export {
55
+ P as IconButton
56
+ };
@@ -0,0 +1,29 @@
1
+ const o = "_root_1o2bt_2", t = "_xs_1o2bt_21", _ = "_sm_1o2bt_25", n = "_md_1o2bt_29", s = "_lg_1o2bt_33", c = "_xl_1o2bt_37", d = "_primary_1o2bt_41", a = "_secondary_1o2bt_49", r = "_danger_1o2bt_58", b = "_disabled_1o2bt_67", e = "_content_1o2bt_72", l = "_loading_1o2bt_80", g = {
2
+ root: o,
3
+ xs: t,
4
+ sm: _,
5
+ md: n,
6
+ lg: s,
7
+ xl: c,
8
+ primary: d,
9
+ secondary: a,
10
+ danger: r,
11
+ disabled: b,
12
+ content: e,
13
+ loading: l
14
+ };
15
+ export {
16
+ e as content,
17
+ r as danger,
18
+ g as default,
19
+ b as disabled,
20
+ s as lg,
21
+ l as loading,
22
+ n as md,
23
+ d as primary,
24
+ o as root,
25
+ a as secondary,
26
+ _ as sm,
27
+ c as xl,
28
+ t as xs
29
+ };
@@ -0,0 +1,12 @@
1
+ export interface ProgressBarProps {
2
+ current: {
3
+ value: number;
4
+ label?: string;
5
+ };
6
+ max: {
7
+ value: number;
8
+ label?: string;
9
+ };
10
+ }
11
+ export declare const ProgressBar: ({ current, max }: ProgressBarProps) => import("react").JSX.Element;
12
+ //# sourceMappingURL=ProgressBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/ui/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC;AAED,eAAO,MAAM,WAAW,GAAI,kBAAkB,gBAAgB,gCA+B7D,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsxs as s, jsx as a } from "react/jsx-runtime";
2
+ import t from "clsx";
3
+ import { Flex as r } from "../Flex/Flex.js";
4
+ import { Text as o } from "../Text/Text.js";
5
+ const b = ({ current: e, max: l }) => {
6
+ const i = Number.isFinite(e.value) && Number.isFinite(l.value) && l.value > 0 ? Math.min(100, Math.max(0, e.value * 100 / l.value)) : 0;
7
+ return /* @__PURE__ */ s(r, { direction: "col", className: "w-full", gap: "xs", children: [
8
+ /* @__PURE__ */ s(r, { justifyContent: "between", children: [
9
+ e.label && /* @__PURE__ */ a(o, { size: "sm", className: "text-gray-1", children: e.label }),
10
+ l.label && /* @__PURE__ */ a(o, { size: "sm", className: "text-gray-1", children: l.label })
11
+ ] }),
12
+ /* @__PURE__ */ a(
13
+ r,
14
+ {
15
+ className: "gap-0 bg-gray-2 rounded-full overflow-hidden",
16
+ role: "progressbar",
17
+ "aria-label": e.label,
18
+ "aria-valuemin": 0,
19
+ "aria-valuemax": 100,
20
+ "aria-valuenow": Math.round(i),
21
+ children: /* @__PURE__ */ a(
22
+ r,
23
+ {
24
+ className: t("gap-0 h-1.5 rounded-full", e.value > l.value ? "bg-error-1" : "bg-primary-1"),
25
+ style: { width: `${i}%` }
26
+ }
27
+ )
28
+ }
29
+ )
30
+ ] });
31
+ };
32
+ export {
33
+ b as ProgressBar
34
+ };
@@ -0,0 +1,8 @@
1
+ export interface SkeletonProps {
2
+ width?: string | number;
3
+ height?: string | number;
4
+ borderRadius?: string | number;
5
+ className?: string;
6
+ }
7
+ export declare const Skeleton: ({ width, height, borderRadius, className }: SkeletonProps) => import("react").JSX.Element;
8
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/ui/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,GAAI,4CAAqD,aAAa,gCAQ1F,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import i from "clsx";
3
+ import c from "./Skeleton.module.css.js";
4
+ const p = ({ width: o, height: r = 16, borderRadius: t = 4, className: e }) => {
5
+ const s = {
6
+ width: o,
7
+ height: r,
8
+ borderRadius: t
9
+ };
10
+ return /* @__PURE__ */ m("div", { "aria-hidden": "true", className: i(c.root, e), style: s });
11
+ };
12
+ export {
13
+ p as Skeleton
14
+ };
@@ -0,0 +1,7 @@
1
+ const o = "_root_1rkuv_1", t = {
2
+ root: o
3
+ };
4
+ export {
5
+ t as default,
6
+ o as root
7
+ };
@@ -0,0 +1,30 @@
1
+ import type { ComponentProps } from "react";
2
+ declare const WEIGHTS_MAP: {
3
+ readonly thin: "font-thin";
4
+ readonly extralight: "font-extralight";
5
+ readonly light: "font-light";
6
+ readonly normal: "font-normal";
7
+ readonly medium: "font-medium";
8
+ readonly semibold: "font-semibold";
9
+ readonly bold: "font-bold";
10
+ readonly extrabold: "font-extrabold";
11
+ readonly black: "font-black";
12
+ };
13
+ declare const FONT_SIZES: {
14
+ readonly xs: "text-xs";
15
+ readonly sm: "text-sm";
16
+ readonly md: "text-base";
17
+ readonly lg: "text-lg";
18
+ readonly xl: "text-xl";
19
+ readonly "2xl": "text-2xl";
20
+ readonly "3xl": "text-3xl";
21
+ readonly "4xl": "text-4xl";
22
+ readonly inherit: "";
23
+ };
24
+ export interface TextProps extends ComponentProps<"span"> {
25
+ size?: keyof typeof FONT_SIZES;
26
+ weight?: keyof typeof WEIGHTS_MAP;
27
+ }
28
+ export declare const Text: ({ children, weight, size, className, ...props }: TextProps) => import("react").JSX.Element;
29
+ export {};
30
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/ui/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,QAAA,MAAM,WAAW;;;;;;;;;;CAUP,CAAC;AAEX,QAAA,MAAM,UAAU;;;;;;;;;;CAUN,CAAC;AAEX,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvD,IAAI,CAAC,EAAE,MAAM,OAAO,UAAU,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,OAAO,WAAW,CAAC;CACnC;AAED,eAAO,MAAM,IAAI,GAAI,iDAMlB,SAAS,gCASX,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { twMerge as m } from "tailwind-merge";
3
+ const r = {
4
+ thin: "font-thin",
5
+ extralight: "font-extralight",
6
+ light: "font-light",
7
+ normal: "font-normal",
8
+ medium: "font-medium",
9
+ semibold: "font-semibold",
10
+ bold: "font-bold",
11
+ extrabold: "font-extrabold",
12
+ black: "font-black"
13
+ }, i = {
14
+ xs: "text-xs",
15
+ sm: "text-sm",
16
+ md: "text-base",
17
+ lg: "text-lg",
18
+ xl: "text-xl",
19
+ "2xl": "text-2xl",
20
+ "3xl": "text-3xl",
21
+ "4xl": "text-4xl",
22
+ inherit: ""
23
+ }, f = ({
24
+ children: t,
25
+ weight: l = "normal",
26
+ size: o = "md",
27
+ className: x,
28
+ ...e
29
+ }) => /* @__PURE__ */ n(
30
+ "span",
31
+ {
32
+ className: m(i[o], r[l], x),
33
+ ...e,
34
+ children: t
35
+ }
36
+ );
37
+ export {
38
+ f as Text
39
+ };
@@ -0,0 +1,13 @@
1
+ export { Text, type TextProps } from "./Text/Text.js";
2
+ export { Flex, type FlexProps } from "./Flex/Flex.js";
3
+ export { Button, type ButtonProps } from "./Button/Button.js";
4
+ export { Card, type CardProps } from "./Card/Card.js";
5
+ export { Chip, type ChipProps, type ChipColor, type ChipVariant, } from "./Chip/Chip.js";
6
+ export { Skeleton, type SkeletonProps } from "./Skeleton/Skeleton.js";
7
+ export { IconButton, type IconButtonProps, type IconButtonColor, } from "./IconButton/IconButton.js";
8
+ export { CircularLoading, type CircularLoadingProps, } from "./CircularLoading/CircularLoading.js";
9
+ export { ProgressBar, type ProgressBarProps, } from "./ProgressBar/ProgressBar.js";
10
+ export { Accordion, type AccordionProps } from "./Accordion/Accordion.js";
11
+ export { Alert, type AlertProps } from "./Alert/Alert.js";
12
+ export { Grid, type GridGap, type GridItemProps, type GridItemSize, type GridRootProps, type ResponsiveValue, } from "./Grid/Grid.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,IAAI,EACJ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,IAAI,EACJ,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,55 @@
1
1
  {
2
2
  "name": "@divayth/brick-ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.0.2",
4
+ "description": "React components for Brick UI",
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "sideEffects": [
10
+ "**/*.css"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ },
17
+ "./styles.css": "./dist/styles.css"
18
+ },
19
+ "scripts": {
20
+ "build": "vite build && tsc -p tsconfig.build.json",
21
+ "typecheck": "tsc --noEmit",
22
+ "storybook": "storybook dev -p 6006",
23
+ "build-storybook": "storybook build",
24
+ "prepack": "npm run build"
25
+ },
26
+ "peerDependencies": {
27
+ "react": "^19.0.0",
28
+ "react-dom": "^19.0.0"
29
+ },
30
+ "dependencies": {
31
+ "clsx": "^2.1.1",
32
+ "lucide-react": "^1.57.0",
33
+ "tailwind-merge": "^3.7.0"
34
+ },
35
+ "devDependencies": {
36
+ "@fontsource-variable/inter": "^5.3.0",
37
+ "@storybook/addon-docs": "^10.3.6",
38
+ "@storybook/react-vite": "^10.3.6",
39
+ "@tailwindcss/vite": "^4.0.0",
40
+ "@types/node": "^22.0.0",
41
+ "@types/react": "^19.0.0",
42
+ "@types/react-dom": "^19.0.0",
43
+ "@vitejs/plugin-react": "^5.0.0",
44
+ "react": "^19.0.0",
45
+ "react-dom": "^19.0.0",
46
+ "rollup-plugin-preserve-directives": "^0.4.0",
47
+ "storybook": "^10.3.6",
48
+ "tailwindcss": "^4.0.0",
49
+ "typescript": "^5.0.0",
50
+ "vite": "^7.0.0"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ }
55
+ }