@flipdish/ui-library 0.25.1 → 0.26.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.
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Shared `Divider` style config, read by both `index.tsx` and `index.native.tsx`.
5
+ *
6
+ * `base` fills the rule with the `border-secondary` token via `bg-*` rather than an
7
+ * actual border — both a web `<hr>` and a native `View` render that identically, so
8
+ * there is no platform-specific colour table here (unlike `Dot`, which needs one).
9
+ * `orientations` swaps which axis is 1px vs. full-size.
10
+ *
11
+ * `border-0` is load-bearing on web only: it clears Preflight's default `<hr>` border so
12
+ * the line comes from the background instead. It is inert on a native `View` — kept here
13
+ * rather than split out because one shared string is worth more than saving a no-op class.
14
+ */
15
+ const styles = {
16
+ base: 'shrink-0 border-0 bg-border-secondary',
17
+ orientations: {
18
+ horizontal: 'h-px w-full',
19
+ vertical: 'h-full w-px',
20
+ },
21
+ };
22
+
23
+ exports.styles = styles;
24
+ //# sourceMappingURL=Divider.styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.styles.cjs","sources":["../../../../src/components/atoms/Divider/Divider.styles.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;;;;;;;AAWG;AACI,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,uCAAuC;AAC7C,IAAA,YAAY,EAAE;AACZ,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,aAAa;AACxB,KAAA;;;;;"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Shared `Divider` style config, read by both `index.tsx` and `index.native.tsx`.
3
+ *
4
+ * `base` fills the rule with the `border-secondary` token via `bg-*` rather than an
5
+ * actual border — both a web `<hr>` and a native `View` render that identically, so
6
+ * there is no platform-specific colour table here (unlike `Dot`, which needs one).
7
+ * `orientations` swaps which axis is 1px vs. full-size.
8
+ *
9
+ * `border-0` is load-bearing on web only: it clears Preflight's default `<hr>` border so
10
+ * the line comes from the background instead. It is inert on a native `View` — kept here
11
+ * rather than split out because one shared string is worth more than saving a no-op class.
12
+ */
13
+ export declare const styles: {
14
+ base: string;
15
+ orientations: {
16
+ horizontal: string;
17
+ vertical: string;
18
+ };
19
+ };
20
+ export type DividerOrientation = keyof typeof styles.orientations;
21
+ //# sourceMappingURL=Divider.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Divider/Divider.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,MAAM,CAAC,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared `Divider` style config, read by both `index.tsx` and `index.native.tsx`.
3
+ *
4
+ * `base` fills the rule with the `border-secondary` token via `bg-*` rather than an
5
+ * actual border — both a web `<hr>` and a native `View` render that identically, so
6
+ * there is no platform-specific colour table here (unlike `Dot`, which needs one).
7
+ * `orientations` swaps which axis is 1px vs. full-size.
8
+ *
9
+ * `border-0` is load-bearing on web only: it clears Preflight's default `<hr>` border so
10
+ * the line comes from the background instead. It is inert on a native `View` — kept here
11
+ * rather than split out because one shared string is worth more than saving a no-op class.
12
+ */
13
+ const styles = {
14
+ base: 'shrink-0 border-0 bg-border-secondary',
15
+ orientations: {
16
+ horizontal: 'h-px w-full',
17
+ vertical: 'h-full w-px',
18
+ },
19
+ };
20
+
21
+ export { styles };
22
+ //# sourceMappingURL=Divider.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.styles.js","sources":["../../../../src/components/atoms/Divider/Divider.styles.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;AAWG;AACI,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,uCAAuC;AAC7C,IAAA,YAAY,EAAE;AACZ,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,aAAa;AACxB,KAAA;;;;;"}
@@ -3,6 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var cx = require('@flipdish/ui-library/utilities/cx');
5
5
  var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
6
+ var Divider_styles = require('./Divider.styles.cjs');
6
7
 
7
8
  /**
8
9
  * A thin rule that visually separates content. Renders a 1px line filled with the
@@ -14,7 +15,7 @@ var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
14
15
  */
15
16
  const Divider = ({ orientation = 'horizontal', className, 'data-testid': dataTestId, ...props }) => {
16
17
  const dividerTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'divider', rootName: 'divider' });
17
- return (jsxRuntime.jsx("hr", { "aria-orientation": orientation, className: cx.cx('shrink-0 border-0 bg-border-secondary', orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px', className), ...props, "data-testid": dividerTestId }));
18
+ return (jsxRuntime.jsx("hr", { "aria-orientation": orientation, className: cx.cx(Divider_styles.styles.base, Divider_styles.styles.orientations[orientation], className), ...props, "data-testid": dividerTestId }));
18
19
  };
19
20
 
20
21
  exports.Divider = Divider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/atoms/Divider/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","_jsx","cx"],"mappings":";;;;;;AAgBA;;;;;;;AAOG;MACU,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAgB,KAAI;AACtH,IAAA,MAAM,aAAa,GAAGA,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAExG,IAAA,QACEC,cAAA,CAAA,IAAA,EAAA,EAAA,kBAAA,EACoB,WAAW,EAC7B,SAAS,EAAEC,KAAE,CAAC,uCAAuC,EAAE,WAAW,KAAK,YAAY,GAAG,aAAa,GAAG,aAAa,EAAE,SAAS,CAAC,EAAA,GAC3H,KAAK,EAAA,aAAA,EACI,aAAa,EAAA,CAC1B;AAEN;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/atoms/Divider/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","_jsx","cx","styles"],"mappings":";;;;;;;AAmBA;;;;;;;AAOG;MACU,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAgB,KAAI;AACtH,IAAA,MAAM,aAAa,GAAGA,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAExG,QACEC,cAAA,CAAA,IAAA,EAAA,EAAA,kBAAA,EACoB,WAAW,EAC7B,SAAS,EAAEC,KAAE,CAACC,qBAAM,CAAC,IAAI,EAAEA,qBAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAA,GACnE,KAAK,EAAA,aAAA,EACI,aAAa,EAAA,CAC1B;AAEN;;;;"}
@@ -1,10 +1,12 @@
1
1
  import type { HTMLAttributes } from 'react';
2
+ import { type DividerOrientation } from './Divider.styles';
3
+ export type { DividerOrientation } from './Divider.styles';
2
4
  export interface DividerProps extends HTMLAttributes<HTMLHRElement> {
3
5
  /**
4
6
  * The axis the divider is drawn along.
5
7
  * @default "horizontal"
6
8
  */
7
- orientation?: 'horizontal' | 'vertical';
9
+ orientation?: DividerOrientation;
8
10
  /** Overrides the `data-testid` (defaults to `fd-divider`). */
9
11
  'data-testid'?: string;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Divider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,aAAa,CAAC;IACjE;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,iEAAgF,YAAY,gCAWnH,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Divider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,kBAAkB,EAAU,MAAM,kBAAkB,CAAC;AAEnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,aAAa,CAAC;IACjE;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,iEAAgF,YAAY,gCAWnH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx } from '@flipdish/ui-library/utilities/cx';
3
3
  import { useResolvedTestId } from '@flipdish/ui-library/utilities/testIdUtils';
4
+ import { styles } from './Divider.styles.js';
4
5
 
5
6
  /**
6
7
  * A thin rule that visually separates content. Renders a 1px line filled with the
@@ -12,7 +13,7 @@ import { useResolvedTestId } from '@flipdish/ui-library/utilities/testIdUtils';
12
13
  */
13
14
  const Divider = ({ orientation = 'horizontal', className, 'data-testid': dataTestId, ...props }) => {
14
15
  const dividerTestId = useResolvedTestId({ testId: dataTestId, segment: 'divider', rootName: 'divider' });
15
- return (jsx("hr", { "aria-orientation": orientation, className: cx('shrink-0 border-0 bg-border-secondary', orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px', className), ...props, "data-testid": dividerTestId }));
16
+ return (jsx("hr", { "aria-orientation": orientation, className: cx(styles.base, styles.orientations[orientation], className), ...props, "data-testid": dividerTestId }));
16
17
  };
17
18
 
18
19
  export { Divider };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/atoms/Divider/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAgBA;;;;;;;AAOG;MACU,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAgB,KAAI;AACtH,IAAA,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAExG,IAAA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAA,kBAAA,EACoB,WAAW,EAC7B,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,WAAW,KAAK,YAAY,GAAG,aAAa,GAAG,aAAa,EAAE,SAAS,CAAC,EAAA,GAC3H,KAAK,EAAA,aAAA,EACI,aAAa,EAAA,CAC1B;AAEN;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/atoms/Divider/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;AAmBA;;;;;;;AAOG;MACU,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,EAAgB,KAAI;AACtH,IAAA,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAExG,QACEA,GAAA,CAAA,IAAA,EAAA,EAAA,kBAAA,EACoB,WAAW,EAC7B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAA,GACnE,KAAK,EAAA,aAAA,EACI,aAAa,EAAA,CAC1B;AAEN;;;;"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Shared `Divider` style config, read by both `index.tsx` and `index.native.tsx`.
3
+ *
4
+ * `base` fills the rule with the `border-secondary` token via `bg-*` rather than an
5
+ * actual border — both a web `<hr>` and a native `View` render that identically, so
6
+ * there is no platform-specific colour table here (unlike `Dot`, which needs one).
7
+ * `orientations` swaps which axis is 1px vs. full-size.
8
+ *
9
+ * `border-0` is load-bearing on web only: it clears Preflight's default `<hr>` border so
10
+ * the line comes from the background instead. It is inert on a native `View` — kept here
11
+ * rather than split out because one shared string is worth more than saving a no-op class.
12
+ */
13
+ export declare const styles: {
14
+ base: string;
15
+ orientations: {
16
+ horizontal: string;
17
+ vertical: string;
18
+ };
19
+ };
20
+ export type DividerOrientation = keyof typeof styles.orientations;
21
+ //# sourceMappingURL=Divider.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/Divider/Divider.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,MAAM,CAAC,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared `Divider` style config, read by both `index.tsx` and `index.native.tsx`.
3
+ *
4
+ * `base` fills the rule with the `border-secondary` token via `bg-*` rather than an
5
+ * actual border — both a web `<hr>` and a native `View` render that identically, so
6
+ * there is no platform-specific colour table here (unlike `Dot`, which needs one).
7
+ * `orientations` swaps which axis is 1px vs. full-size.
8
+ *
9
+ * `border-0` is load-bearing on web only: it clears Preflight's default `<hr>` border so
10
+ * the line comes from the background instead. It is inert on a native `View` — kept here
11
+ * rather than split out because one shared string is worth more than saving a no-op class.
12
+ */
13
+ const styles = {
14
+ base: 'shrink-0 border-0 bg-border-secondary',
15
+ orientations: {
16
+ horizontal: 'h-px w-full',
17
+ vertical: 'h-full w-px',
18
+ },
19
+ };
20
+
21
+ export { styles };
22
+ //# sourceMappingURL=Divider.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.styles.js","sources":["../../../../../../src/components/atoms/Divider/Divider.styles.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;AAWG;AACI,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,uCAAuC;AAC7C,IAAA,YAAY,EAAE;AACZ,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,QAAQ,EAAE,aAAa;AACxB,KAAA;;;;;"}
@@ -1,12 +1,34 @@
1
+ import { type DividerOrientation } from './Divider.styles';
2
+ export type { DividerOrientation } from './Divider.styles';
1
3
  /**
2
- * `Divider` has no React Native implementation.
4
+ * Declared standalone rather than extending `ViewProps`. `react-docgen` follows an
5
+ * `extends` clause into `react-native/index.js`, which ships untranspiled, and Babel
6
+ * fails to parse it — breaking `storybook dev` for the whole package. `Avatar` and `Dot`
7
+ * declare their props the same way; `Button` uses `Pick<PressableProps, …>` in a `type`
8
+ * intersection, which docgen does not follow.
9
+ */
10
+ export interface DividerProps {
11
+ /**
12
+ * The axis the divider is drawn along.
13
+ * @default "horizontal"
14
+ */
15
+ orientation?: DividerOrientation;
16
+ /** Additional class names for layout and spacing. */
17
+ className?: string;
18
+ /** Overrides the generated `testID` (defaults to `fd-divider`). */
19
+ 'data-testid'?: string;
20
+ }
21
+ /**
22
+ * React Native `Divider` — same 1px rule as web, drawn as a `View` filled with the
23
+ * `border-secondary` token via `bg-border-secondary` instead of a native `<hr>` (React
24
+ * Native has no such element). Shares web's class strings.
3
25
  *
4
- * This is a generated types-only stub (scripts/emit-native-stubs.mjs). It exists so
5
- * that importing `@flipdish/ui-library/components/atoms/Divider` from React Native fails at
6
- * compile time rather than resolving to the web build's types. There is no
7
- * matching `index.js`, so Metro cannot bundle this module either.
26
+ * Every prop web names is supported here, so there is no `unsupportedProps` list. Web
27
+ * additionally extends `HTMLAttributes<HTMLHRElement>` and forwards arbitrary attributes;
28
+ * native does not forward anything beyond the props declared above (see the note on the
29
+ * interface for why it cannot extend `ViewProps`).
8
30
  *
9
- * To make `Divider` available on React Native, add an `index.native.tsx` beside
10
- * its `index.tsx` — the build picks it up automatically and this stub disappears.
31
+ * @summary Thin 1px rule that separates sections of content (React Native)
11
32
  */
12
- export declare const __NO_REACT_NATIVE_IMPLEMENTATION__: never;
33
+ export declare const Divider: ({ orientation, className, "data-testid": dataTestId }: DividerProps) => import("react").JSX.Element;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/Divider/index.native.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kBAAkB,EAAU,MAAM,kBAAkB,CAAC;AAEnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,GAAI,uDAAsE,YAAY,gCAIzG,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { cx } from '../../../utilities/cx/index.js';
3
+ import { useResolvedTestId } from '../../../utilities/testIdUtils/index.js';
4
+ import { View } from 'react-native';
5
+ import { styles } from './Divider.styles.js';
6
+
7
+ /**
8
+ * React Native `Divider` — same 1px rule as web, drawn as a `View` filled with the
9
+ * `border-secondary` token via `bg-border-secondary` instead of a native `<hr>` (React
10
+ * Native has no such element). Shares web's class strings.
11
+ *
12
+ * Every prop web names is supported here, so there is no `unsupportedProps` list. Web
13
+ * additionally extends `HTMLAttributes<HTMLHRElement>` and forwards arbitrary attributes;
14
+ * native does not forward anything beyond the props declared above (see the note on the
15
+ * interface for why it cannot extend `ViewProps`).
16
+ *
17
+ * @summary Thin 1px rule that separates sections of content (React Native)
18
+ */
19
+ const Divider = ({ orientation = 'horizontal', className, 'data-testid': dataTestId }) => {
20
+ const dividerTestId = useResolvedTestId({ testId: dataTestId, segment: 'divider', rootName: 'divider' });
21
+ return jsx(View, { accessibilityRole: "none", className: cx(styles.base, styles.orientations[orientation], className), testID: dividerTestId });
22
+ };
23
+
24
+ export { Divider };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/atoms/Divider/index.native.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;AA0BA;;;;;;;;;;;AAWG;AACI,MAAM,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAgB,KAAI;AAC5G,IAAA,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAExG,IAAA,OAAOA,GAAA,CAAC,IAAI,EAAA,EAAC,iBAAiB,EAAC,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,GAAI;AAC1I;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flipdish/ui-library",
3
- "version": "0.25.1",
3
+ "version": "0.26.0",
4
4
  "description": "Flipdish Design System — atomic-design component library (Tailwind v4 + UntitledUI + React Aria).",
5
5
  "type": "module",
6
6
  "imports": {