@fayz-ai/ui 0.18.0 → 0.21.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.
Files changed (81) hide show
  1. package/dist/analytics/derive.d.ts +1 -9
  2. package/dist/analytics/derive.d.ts.map +1 -1
  3. package/dist/chunk-AIUHVTVK.js +205 -0
  4. package/dist/chunk-AIUHVTVK.js.map +1 -0
  5. package/dist/{chunk-OBIU37AX.js → chunk-EGHEU3U5.js} +156 -48
  6. package/dist/chunk-EGHEU3U5.js.map +1 -0
  7. package/dist/{chunk-3OVZ5JJQ.js → chunk-GLRLWBBF.js} +4 -3
  8. package/dist/chunk-GLRLWBBF.js.map +1 -0
  9. package/dist/{chunk-ZLPYNHXH.js → chunk-MBGTFL4I.js} +3 -3
  10. package/dist/{chunk-ZLPYNHXH.js.map → chunk-MBGTFL4I.js.map} +1 -1
  11. package/dist/{chunk-AASANYXN.js → chunk-OB2ULDBD.js} +6 -4
  12. package/dist/chunk-OB2ULDBD.js.map +1 -0
  13. package/dist/{chunk-Z2ITFPGL.js → chunk-OYH7CEMB.js} +609 -173
  14. package/dist/chunk-OYH7CEMB.js.map +1 -0
  15. package/dist/{chunk-DFOAKWYB.js → chunk-P3YTL3MF.js} +140 -16
  16. package/dist/chunk-P3YTL3MF.js.map +1 -0
  17. package/dist/dashboard/index.js +2 -2
  18. package/dist/icons.d.ts.map +1 -1
  19. package/dist/icons.js +1 -1
  20. package/dist/index.d.ts +3 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +11 -25
  23. package/dist/index.js.map +1 -1
  24. package/dist/layout/AppShell.d.ts +9 -1
  25. package/dist/layout/AppShell.d.ts.map +1 -1
  26. package/dist/layout/ModulePage.d.ts +13 -0
  27. package/dist/layout/ModulePage.d.ts.map +1 -1
  28. package/dist/layout/SaveBar.d.ts +10 -1
  29. package/dist/layout/SaveBar.d.ts.map +1 -1
  30. package/dist/layout/Sidebar.d.ts +7 -1
  31. package/dist/layout/Sidebar.d.ts.map +1 -1
  32. package/dist/layout/Takeover.d.ts +31 -0
  33. package/dist/layout/Takeover.d.ts.map +1 -0
  34. package/dist/layout/index.d.ts +1 -0
  35. package/dist/layout/index.d.ts.map +1 -1
  36. package/dist/layout/index.js +3 -3
  37. package/dist/lib/error-message.d.ts +2 -0
  38. package/dist/lib/error-message.d.ts.map +1 -0
  39. package/dist/primitives/brand-marks.d.ts +11 -0
  40. package/dist/primitives/brand-marks.d.ts.map +1 -0
  41. package/dist/primitives/button.d.ts +1 -1
  42. package/dist/primitives/dot-badge.d.ts +27 -0
  43. package/dist/primitives/dot-badge.d.ts.map +1 -0
  44. package/dist/primitives/draft-commit-bar.d.ts +27 -0
  45. package/dist/primitives/draft-commit-bar.d.ts.map +1 -0
  46. package/dist/primitives/filter-check-list.d.ts +65 -0
  47. package/dist/primitives/filter-check-list.d.ts.map +1 -0
  48. package/dist/primitives/header-tabs.d.ts +35 -0
  49. package/dist/primitives/header-tabs.d.ts.map +1 -1
  50. package/dist/primitives/image-drop.d.ts.map +1 -1
  51. package/dist/primitives/index.d.ts +6 -0
  52. package/dist/primitives/index.d.ts.map +1 -1
  53. package/dist/primitives/index.js +4 -4
  54. package/dist/primitives/list-chrome.d.ts +5 -1
  55. package/dist/primitives/list-chrome.d.ts.map +1 -1
  56. package/dist/primitives/list-view.d.ts.map +1 -1
  57. package/dist/primitives/mini-calendar.d.ts +36 -0
  58. package/dist/primitives/mini-calendar.d.ts.map +1 -0
  59. package/dist/primitives/multi-select.d.ts +21 -0
  60. package/dist/primitives/multi-select.d.ts.map +1 -0
  61. package/dist/primitives/page-actions.d.ts.map +1 -1
  62. package/dist/primitives/refresh-button.d.ts.map +1 -1
  63. package/dist/primitives/row-actions.d.ts.map +1 -1
  64. package/dist/primitives/select.d.ts.map +1 -1
  65. package/dist/primitives/stock-entry-form.d.ts +52 -0
  66. package/dist/primitives/stock-entry-form.d.ts.map +1 -0
  67. package/dist/styles.css +124 -0
  68. package/dist/tailwind.cjs +1 -1
  69. package/dist/tailwind.cjs.map +1 -1
  70. package/dist/tailwind.js +1 -1
  71. package/dist/tailwind.js.map +1 -1
  72. package/dist/wizard/index.js +2 -2
  73. package/dist/wizard/useWizard.d.ts.map +1 -1
  74. package/package.json +2 -2
  75. package/dist/chunk-3OVZ5JJQ.js.map +0 -1
  76. package/dist/chunk-4GK6IHOI.js +0 -177
  77. package/dist/chunk-4GK6IHOI.js.map +0 -1
  78. package/dist/chunk-AASANYXN.js.map +0 -1
  79. package/dist/chunk-DFOAKWYB.js.map +0 -1
  80. package/dist/chunk-OBIU37AX.js.map +0 -1
  81. package/dist/chunk-Z2ITFPGL.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ /**
3
+ * The little month picker, shared.
4
+ *
5
+ * It lived inside plugin-agenda, which is where it was first needed, but there
6
+ * is nothing about a month grid that belongs to appointments — it is date
7
+ * arithmetic and seven columns. plugin-reservations wanted the same picker for
8
+ * a screen with no professionals in it at all, and copying 120 lines of
9
+ * `new Date(year, month + 1, 0)` into a second plugin is how two calendars
10
+ * start disagreeing about which day a week begins on.
11
+ *
12
+ * `markers` is the one thing added in the lift: a day can carry dots. The
13
+ * agenda paints nothing (its month view is the calendar itself), the
14
+ * reservations screen paints one dot per state so the month says where the
15
+ * night is full before you click into it.
16
+ */
17
+ export interface MiniCalendarMarker {
18
+ /** Any CSS colour. Up to three are drawn; the rest become a "+". */
19
+ color: string;
20
+ /** Read by screen readers on the day button. */
21
+ label?: string;
22
+ }
23
+ export interface MiniCalendarProps {
24
+ selectedDate: Date;
25
+ onDateSelect: (date: Date) => void;
26
+ onMonthChange?: (date: Date) => void;
27
+ /** Keyed by `YYYY-MM-DD` in LOCAL time — the same string the day buttons
28
+ * build, so a caller never has to guess a timezone. */
29
+ markers?: Record<string, MiniCalendarMarker[]>;
30
+ }
31
+ /** Local-time ISO day. `toISOString()` would shift a São Paulo evening into the
32
+ * next day, which is exactly the class of bug a shared component should not
33
+ * make each caller rediscover. */
34
+ export declare function toLocalISODate(d: Date): string;
35
+ export declare function MiniCalendar({ selectedDate, onDateSelect, onMonthChange, markers }: MiniCalendarProps): React.JSX.Element;
36
+ //# sourceMappingURL=mini-calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mini-calendar.d.ts","sourceRoot":"","sources":["../../src/primitives/mini-calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAItC;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,IAAI,CAAA;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACpC;4DACwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;CAC/C;AAoBD;;mCAEmC;AACnC,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAI9C;AAED,wBAAgB,YAAY,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB,qBAqGrG"}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ export interface MultiSelectOption {
3
+ value: string;
4
+ label: string;
5
+ hint?: string;
6
+ }
7
+ export interface MultiSelectProps {
8
+ options: MultiSelectOption[];
9
+ value: string[];
10
+ onChange: (value: string[]) => void;
11
+ /** O que o gatilho diz quando nada está marcado — "Todos os serviços". */
12
+ allLabel?: string;
13
+ searchPlaceholder?: string;
14
+ emptyLabel?: string;
15
+ disabled?: boolean;
16
+ className?: string;
17
+ /** Abaixo disto a busca não aparece: procurar entre seis é mais lento que ler. */
18
+ searchThreshold?: number;
19
+ }
20
+ export declare function MultiSelect({ options, value, onChange, allLabel, searchPlaceholder, emptyLabel, disabled, className, searchThreshold, }: MultiSelectProps): React.JSX.Element;
21
+ //# sourceMappingURL=multi-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../src/primitives/multi-select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAkB,EAClB,iBAA6B,EAC7B,UAA8B,EAC9B,QAAQ,EACR,SAAS,EACT,eAAmB,GACpB,EAAE,gBAAgB,qBAkGlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-actions.d.ts","sourceRoot":"","sources":["../../src/primitives/page-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA0B9B,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE7E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4BAoGtG;AAmMD,8EAA8E;AAC9E,eAAO,IAAI,gBAAgB,QAAU,CAAA;AACrC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAA8B"}
1
+ {"version":3,"file":"page-actions.d.ts","sourceRoot":"","sources":["../../src/primitives/page-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA2B9B,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE7E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4BA4GtG;AAmMD,8EAA8E;AAC9E,eAAO,IAAI,gBAAgB,QAAU,CAAA;AACrC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,QAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-button.d.ts","sourceRoot":"","sources":["../../src/primitives/refresh-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,qBA2CjH;yBA3Ce,aAAa"}
1
+ {"version":3,"file":"refresh-button.d.ts","sourceRoot":"","sources":["../../src/primitives/refresh-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAgB9B,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,qBA8CjH;yBA9Ce,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"row-actions.d.ts","sourceRoot":"","sources":["../../src/primitives/row-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAoBpD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,EACT,WAA0B,GAC3B,EAAE;IACD,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,4BAyEA;AAED,4EAA4E;AAC5E,eAAO,IAAI,eAAe,QAAU,CAAA;AACpC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,QAA6B"}
1
+ {"version":3,"file":"row-actions.d.ts","sourceRoot":"","sources":["../../src/primitives/row-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAqBpD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,SAAS,EACT,WAA0B,GAC3B,EAAE;IACD,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,4BA4EA;AAED,4EAA4E;AAC5E,eAAO,IAAI,eAAe,QAAU,CAAA;AACpC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,QAA6B"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/primitives/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAKzD,QAAA,MAAM,MAAM,uCAAuB,CAAA;AAEnC,QAAA,MAAM,WAAW,yGAAwB,CAAA;AAEzC,QAAA,MAAM,WAAW,0GAAwB,CAAA;AAEzC,QAAA,MAAM,aAAa,oKAiBjB,CAAA;AAGF,QAAA,MAAM,oBAAoB,qKAcxB,CAAA;AAGF,QAAA,MAAM,sBAAsB,uKAc1B,CAAA;AAIF,QAAA,MAAM,aAAa,8JA6BjB,CAAA;AAGF,QAAA,MAAM,WAAW,4JASf,CAAA;AAGF,QAAA,MAAM,UAAU,2JAmBd,CAAA;AAGF,QAAA,MAAM,eAAe,gKASnB,CAAA;AAGF,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAA"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/primitives/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAKzD,QAAA,MAAM,MAAM,uCAAuB,CAAA;AAEnC,QAAA,MAAM,WAAW,yGAAwB,CAAA;AAEzC,QAAA,MAAM,WAAW,0GAAwB,CAAA;AAEzC,QAAA,MAAM,aAAa,oKAiBjB,CAAA;AAGF,QAAA,MAAM,oBAAoB,qKAcxB,CAAA;AAGF,QAAA,MAAM,sBAAsB,uKAc1B,CAAA;AAIF,QAAA,MAAM,aAAa,8JA6BjB,CAAA;AAGF,QAAA,MAAM,WAAW,4JAqBf,CAAA;AAGF,QAAA,MAAM,UAAU,2JAmBd,CAAA;AAGF,QAAA,MAAM,eAAe,gKASnB,CAAA;AAGF,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAA"}
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ export interface StockEntryVerb {
3
+ value: string;
4
+ label: string;
5
+ /** What it does to the balance. `set` asks for a count, not a delta. */
6
+ effect: 'increase' | 'decrease' | 'set' | 'move';
7
+ }
8
+ export interface StockEntryReason {
9
+ key: string;
10
+ label: string;
11
+ }
12
+ export interface StockEntrySubmit {
13
+ verb: string;
14
+ quantity: number;
15
+ reasonCode: string;
16
+ occurredOn: string;
17
+ note: string;
18
+ }
19
+ export interface StockEntryFormProps {
20
+ /** The verb the form opens on; null keeps it closed. */
21
+ verb: string | null;
22
+ onVerbChange: (verb: string) => void;
23
+ onClose: () => void;
24
+ verbs: readonly StockEntryVerb[];
25
+ reasons?: readonly StockEntryReason[];
26
+ /** Current on-hand, to show the consequence while they type. */
27
+ available: number;
28
+ saving?: boolean;
29
+ onSubmit: (entry: StockEntrySubmit) => void | Promise<void>;
30
+ labels?: Partial<typeof DEFAULT_LABELS>;
31
+ }
32
+ declare const DEFAULT_LABELS: {
33
+ title: string;
34
+ description: string;
35
+ quantity: string;
36
+ reason: string;
37
+ reasonDefault: string;
38
+ whenArrived: string;
39
+ when: string;
40
+ note: string;
41
+ notePlaceholder: string;
42
+ addNote: string;
43
+ staysAt: string;
44
+ notEnough: string;
45
+ sayHowMany: string;
46
+ cancel: string;
47
+ submit: string;
48
+ submitting: string;
49
+ };
50
+ export declare function StockEntryForm({ verb, onVerbChange, onClose, verbs, reasons, available, saving, onSubmit, labels: overrides, }: StockEntryFormProps): React.JSX.Element;
51
+ export {};
52
+ //# sourceMappingURL=stock-entry-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-entry-form.d.ts","sourceRoot":"","sources":["../../src/primitives/stock-entry-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAA;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IAChC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACrC,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,cAAc,CAAC,CAAA;CACxC;AAED,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;CAiBnB,CAAA;AAOD,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,OAAY,EAAE,SAAS,EAC3D,MAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAC5C,EAAE,mBAAmB,qBAkKrB"}
package/dist/styles.css CHANGED
@@ -639,6 +639,30 @@ select.bg-card,
639
639
  to { opacity: 0; transform: translateY(8px); }
640
640
  }
641
641
  @media (min-width: 640px) {
642
+ /* The desktop POSITION lives here, next to the animation that assumes it.
643
+ It used to be Tailwind utilities on the element (`sm:inset-auto
644
+ sm:left-1/2 sm:top-[15%] sm:-translate-x-1/2`) while these keyframes
645
+ hardcode translateX(-50%) — two halves of one layout with different
646
+ failure modes, because a utility only exists if Tailwind found its literal
647
+ string in a scanned file, and keyframes always ship.
648
+
649
+ In an app whose content globs missed CommandPalette.tsx, `left: 50%` was
650
+ never generated, the mobile `inset: 0` stayed, and the -50% then dragged
651
+ the panel half off-screen — in that app only, which is the worst shape a
652
+ bug can have. Doubled class for specificity (0,2,0) so it beats Tailwind's
653
+ single-class `.inset-0` and `.fixed`; not !important, which would also
654
+ beat the overrides that should win. */
655
+ .saas-cmd-palette.saas-cmd-palette {
656
+ inset: auto;
657
+ left: 50%;
658
+ top: 15%;
659
+ display: block;
660
+ width: 100%;
661
+ max-width: 36rem;
662
+ border-radius: 1rem;
663
+ border-width: 1px;
664
+ transform: translateX(-50%);
665
+ }
642
666
  .saas-cmd-palette[data-state="open"] {
643
667
  animation: saas-cmd-in 200ms ease-out both;
644
668
  }
@@ -692,6 +716,82 @@ select.bg-card,
692
716
  to { opacity: 1; }
693
717
  }
694
718
 
719
+ /* Workspace switch — the screen between two tenants.
720
+ Three parts, staged so the eye lands in order: the surface arrives, the
721
+ identity settles, then the steps report in.
722
+
723
+ The veil is OPACITY ONLY for the same reason .saas-fade-in is: it is
724
+ `fixed inset-0`, and a transform on it (or any ancestor) makes it the
725
+ containing block, so `inset-0` would stop meaning the viewport. Everything
726
+ that travels does so on an inner wrapper. */
727
+ .saas-switch-veil { animation: saas-fade-in 320ms var(--saas-transition-easing) both; }
728
+
729
+ /* 60ms behind the veil: the surface is already there when the name lands on
730
+ it, which is what makes the arrival read as one move rather than two. */
731
+ .saas-switch-rise {
732
+ animation: saas-switch-rise 420ms var(--saas-transition-easing) 60ms both;
733
+ }
734
+ @keyframes saas-switch-rise {
735
+ from { opacity: 0; transform: translateY(10px) scale(0.985); }
736
+ to { opacity: 1; transform: translateY(0) scale(1); }
737
+ }
738
+
739
+ /* A step arrives when it BECOMES the current one — the list is not laid out in
740
+ advance and dimmed, it is written as it happens. So there is no stagger delay
741
+ here: each row's cue is the state change that mounted it. */
742
+ .saas-switch-step {
743
+ animation: saas-switch-step 320ms var(--saas-transition-easing) both;
744
+ }
745
+ @keyframes saas-switch-step {
746
+ from { opacity: 0; transform: translateY(8px); }
747
+ to { opacity: 1; transform: translateY(0); }
748
+ }
749
+
750
+ /* The thread between one step and the next, drawn downward from the step above
751
+ as the new one lands. scaleY from a top origin — a height animation would
752
+ reflow the column on every frame. */
753
+ .saas-switch-link {
754
+ transform-origin: top;
755
+ animation: saas-switch-link 300ms var(--saas-transition-easing) both;
756
+ }
757
+ @keyframes saas-switch-link {
758
+ from { transform: scaleY(0); opacity: 0; }
759
+ to { transform: scaleY(1); opacity: 1; }
760
+ }
761
+
762
+ /* The current step's dot breathes while its work is in flight, and stops the
763
+ moment it is ticked off — so the one moving thing on screen is always the
764
+ thing that is actually happening. */
765
+ .saas-switch-dot { animation: saas-switch-dot 1.4s ease-in-out infinite; }
766
+ @keyframes saas-switch-dot {
767
+ 0%, 100% { opacity: 1; transform: scale(1); }
768
+ 50% { opacity: 0.45; transform: scale(0.72); }
769
+ }
770
+
771
+ /* The ring under the mark: one continuous animation on the screen, and it is
772
+ the loading indicator — which is the only thing a continuous animation is
773
+ for. Scale + opacity, never width/height. */
774
+ .saas-switch-pulse { animation: saas-switch-pulse 2s var(--saas-transition-easing) infinite; }
775
+ @keyframes saas-switch-pulse {
776
+ 0% { opacity: 0.5; transform: scale(0.92); }
777
+ 70% { opacity: 0; transform: scale(1.25); }
778
+ 100% { opacity: 0; transform: scale(1.25); }
779
+ }
780
+
781
+ @media (prefers-reduced-motion: reduce) {
782
+ /* The information still arrives in order; it just stops travelling. The
783
+ pulse goes entirely — an infinite loop is exactly what this preference is
784
+ asking us not to run. */
785
+ .saas-switch-veil, .saas-switch-rise, .saas-switch-step, .saas-switch-link {
786
+ animation-duration: 1ms;
787
+ animation-delay: 0ms;
788
+ }
789
+ /* Both loops go: an infinite animation is precisely what this preference is
790
+ asking us not to run. The steps still appear in order. */
791
+ .saas-switch-pulse { animation: none; opacity: 0; }
792
+ .saas-switch-dot { animation: none; }
793
+ }
794
+
695
795
  /* Sidebar rail push — when the whole left menu swaps context (e.g. app nav →
696
796
  settings nav) the incoming rail pulls in from one side while the outgoing
697
797
  one slides off the other, iOS-push style. The outgoing pane is absolutely
@@ -998,3 +1098,27 @@ html {
998
1098
  /* Still marked, just not moving. */
999
1099
  .fz-spotlight-ring { animation: none; }
1000
1100
  }
1101
+
1102
+ /* ---------------------------------------------------------------------------
1103
+ Takeover — a surface that covers the whole shell (see layout/Takeover.tsx).
1104
+
1105
+ It grows from the row that opened it rather than sliding in from an edge: the
1106
+ rail row and the surface are the same object, and a slide would read as
1107
+ "another page arrived" instead of "this menu item opened into a mode". The
1108
+ scale starts near 1 so the panel never looks like a card being zoomed. */
1109
+ .saas-takeover-panel { will-change: transform, opacity; }
1110
+ .saas-takeover-in { animation: saas-takeover-in 260ms cubic-bezier(0.32, 0.72, 0, 1) both; }
1111
+ .saas-takeover-out { animation: saas-takeover-out 200ms cubic-bezier(0.32, 0.72, 0, 1) both; }
1112
+
1113
+ @keyframes saas-takeover-in {
1114
+ from { opacity: 0; transform: scale(0.94) translateY(12px); }
1115
+ to { opacity: 1; transform: scale(1) translateY(0); }
1116
+ }
1117
+ @keyframes saas-takeover-out {
1118
+ from { opacity: 1; transform: scale(1) translateY(0); }
1119
+ to { opacity: 0; transform: scale(0.96) translateY(8px); }
1120
+ }
1121
+
1122
+ @media (prefers-reduced-motion: reduce) {
1123
+ .saas-takeover-in, .saas-takeover-out { animation-duration: 1ms; }
1124
+ }
package/dist/tailwind.cjs CHANGED
@@ -200,7 +200,7 @@ var fayzUiPreset = {
200
200
  };
201
201
 
202
202
  // src/tailwind.ts
203
- var SDK_PACKAGES = ["ui", "admin", "saas", "storefront", "portal"];
203
+ var SDK_PACKAGES = ["ui", "admin", "saas", "storefront", "portal", "app-builder"];
204
204
  var GLOB = "/src/**/*.{ts,tsx}";
205
205
  var DIST_GLOB = "/dist/**/*.js";
206
206
  function fayzTailwind(opts = {}) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/preset.ts","../src/tailwind.ts"],"names":[],"mappings":"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","file":"tailwind.cjs","sourcesContent":["import type { Config } from 'tailwindcss'\n\n/**\n * Tailwind CSS preset for @fayz-ai/ui.\n * Include this in your tailwind.config.ts:\n *\n * import { fayzUiPreset } from '@fayz-ai/ui/theme'\n * export default { presets: [fayzUiPreset], ... }\n */\nconst fayzUiPreset: Partial<Config> = {\n darkMode: 'class',\n theme: {\n extend: {\n colors: {\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n success: {\n DEFAULT: 'hsl(var(--success))',\n foreground: 'hsl(var(--success-foreground))',\n },\n warning: {\n DEFAULT: 'hsl(var(--warning))',\n foreground: 'hsl(var(--warning-foreground))',\n },\n info: {\n DEFAULT: 'hsl(var(--info))',\n foreground: 'hsl(var(--info-foreground))',\n },\n magic: {\n DEFAULT: 'hsl(var(--magic))',\n foreground: 'hsl(var(--magic-foreground))',\n },\n 'info-soft': {\n DEFAULT: 'hsl(var(--info-soft))',\n foreground: 'hsl(var(--info-soft-foreground))',\n },\n 'success-soft': {\n DEFAULT: 'hsl(var(--success-soft))',\n foreground: 'hsl(var(--success-soft-foreground))',\n },\n 'warning-soft': {\n DEFAULT: 'hsl(var(--warning-soft))',\n foreground: 'hsl(var(--warning-soft-foreground))',\n },\n 'destructive-soft': {\n DEFAULT: 'hsl(var(--destructive-soft))',\n foreground: 'hsl(var(--destructive-soft-foreground))',\n },\n 'magic-soft': {\n DEFAULT: 'hsl(var(--magic-soft))',\n foreground: 'hsl(var(--magic-soft-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n // Layout surface tokens\n sidebar: {\n DEFAULT: 'hsl(var(--sidebar))',\n foreground: 'hsl(var(--sidebar-foreground))',\n border: 'hsl(var(--sidebar-border))',\n accent: 'hsl(var(--sidebar-accent))',\n 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',\n muted: 'hsl(var(--sidebar-muted))',\n },\n content: 'hsl(var(--content))',\n },\n borderRadius: {\n button: 'var(--button-radius)',\n card: 'var(--card-radius)',\n input: 'var(--input-radius)',\n modal: 'var(--modal-radius)',\n },\n fontFamily: {\n sans: ['var(--font-family)'],\n mono: ['var(--font-family-mono)'],\n },\n boxShadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n button: 'var(--shadow-button)',\n 'button-primary': 'var(--shadow-button-primary)',\n 'button-inset': 'var(--shadow-button-inset)',\n },\n keyframes: {\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n 'zoom-in': {\n from: { transform: 'scale(0.95)', opacity: '0' },\n to: { transform: 'scale(1)', opacity: '1' },\n },\n 'zoom-out': {\n from: { transform: 'scale(1)', opacity: '1' },\n to: { transform: 'scale(0.95)', opacity: '0' },\n },\n 'slide-in-from-top': {\n from: { transform: 'translateY(-4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n from: { transform: 'translateY(4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-out-to-top': {\n from: { transform: 'translateY(0)', opacity: '1' },\n to: { transform: 'translateY(-4px)', opacity: '0' },\n },\n 'page-in': {\n from: { opacity: '0', transform: 'translateY(6px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-from-right': {\n from: { transform: 'translateX(100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'slide-out-to-right': {\n from: { transform: 'translateX(0)' },\n to: { transform: 'translateX(100%)' },\n },\n 'fade-up': {\n from: { opacity: '0', transform: 'translateY(18px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n kenburns: {\n from: { transform: 'scale(1)' },\n to: { transform: 'scale(1.07)' },\n },\n 'badge-pop': {\n '0%': { transform: 'scale(0.6)' },\n '60%': { transform: 'scale(1.25)' },\n '100%': { transform: 'scale(1)' },\n },\n 'draw-check': {\n from: { 'stroke-dashoffset': '48' },\n to: { 'stroke-dashoffset': '0' },\n },\n 'pop-in': {\n '0%': { transform: 'scale(0)', opacity: '0' },\n '70%': { transform: 'scale(1.15)', opacity: '1' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n 'confetti-fall': {\n '0%': { transform: 'translateY(-10px) rotate(0deg)', opacity: '1' },\n '100%': { transform: 'translateY(140px) rotate(540deg)', opacity: '0' },\n },\n 'pulse-soft': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.55' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 200ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'zoom-in': 'zoom-in 200ms ease-out',\n 'zoom-out': 'zoom-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 200ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 200ms ease-out',\n 'slide-out-to-top': 'slide-out-to-top 150ms ease-in',\n 'slide-in-from-right': 'slide-in-from-right 250ms cubic-bezier(0.16, 1, 0.3, 1)',\n 'slide-out-to-right': 'slide-out-to-right 200ms ease-in',\n 'page-in': 'page-in 250ms ease-out',\n 'fade-up': 'fade-up 600ms cubic-bezier(0.16, 1, 0.3, 1) both',\n kenburns: 'kenburns 9s ease-out both',\n 'badge-pop': 'badge-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n 'draw-check': 'draw-check 600ms ease-out 250ms both',\n 'pop-in': 'pop-in 450ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n 'confetti-fall': 'confetti-fall 1100ms ease-in both',\n 'pulse-soft': 'pulse-soft 1.6s ease-in-out infinite',\n },\n },\n },\n}\n\nexport default fayzUiPreset\nexport { fayzUiPreset }\n","import type { Config } from 'tailwindcss'\nimport { fayzUiPreset } from './theme/preset'\n\nexport interface FayzTailwindOptions {\n /** Extra app-specific content globs, appended after the SDK globs. */\n content?: string[]\n /** SDK source location relative to the app root (default ../../fayz-sdk). */\n sdkDir?: string\n}\n\n// SDK packages that ship Tailwind class names the app renders.\nconst SDK_PACKAGES = ['ui', 'admin', 'saas', 'storefront', 'portal'] as const\nconst GLOB = '/src/**/*.{ts,tsx}'\n// Published packages ship dist only. Tailwind generates a utility solely when it\n// finds the literal class name in a scanned file, so scanning an installed\n// package means scanning its built JS. tsup does not minify, so the strings\n// survive verbatim (\"flex flex-col space-y-1 p-4\") and the extractor reads them\n// exactly as it reads TSX. Scanning src/ under node_modules matched nothing\n// once packages stopped publishing source, which emitted a stylesheet with no\n// utilities — the app rendered fully unstyled.\nconst DIST_GLOB = '/dist/**/*.js'\n\n/**\n * Shared Tailwind config for Fayz dogfood apps. Applies the Fayz UI preset and\n * scans the SDK shell/UI/plugin source for class names — from node_modules (the\n * Fayz editor sandbox / published) and a sibling `../../fayz-sdk` checkout (local\n * dev). Whichever exists is scanned; missing globs are ignored. Apps no longer\n * hand-maintain content globs or the relative-vs-npm preset import.\n *\n * import { fayzTailwind } from '@fayz-ai/ui/tailwind'\n * export default fayzTailwind()\n */\nexport function fayzTailwind(opts: FayzTailwindOptions = {}): Config {\n const sdk = opts.sdkDir ?? '../../fayz-sdk'\n return {\n presets: [fayzUiPreset as Config],\n darkMode: 'class',\n content: [\n './index.html',\n './src/**/*.{ts,tsx}',\n // Published / sandbox: SDK installed in node_modules, which ships dist only.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${DIST_GLOB}`),\n './node_modules/@fayz-ai/plugin-*/dist/**/*.js',\n // Pre-0.10.1 installs still carry src/; a glob that matches nothing is\n // ignored, so keeping these costs nothing and keeps older pins styled.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${GLOB}`),\n './node_modules/@fayz-ai/plugin-*/src/**/*.{ts,tsx}',\n // Local dev: SDK as a sibling checkout (matches nothing in production).\n ...SDK_PACKAGES.map((p) => `${sdk}/packages/${p}${GLOB}`),\n `${sdk}/plugins/*/src/**/*.{ts,tsx}`,\n ...(opts.content ?? []),\n ],\n plugins: [],\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/preset.ts","../src/tailwind.ts"],"names":[],"mappings":";;;AASA,IAAM,YAAA,GAAgC;AAAA,EACpC,QAAA,EAAU,OAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,MAAA,EAAQ,oBAAA;AAAA,QACR,KAAA,EAAO,mBAAA;AAAA,QACP,IAAA,EAAM,kBAAA;AAAA,QACN,UAAA,EAAY,wBAAA;AAAA,QACZ,UAAA,EAAY,wBAAA;AAAA,QACZ,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,uBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,WAAA,EAAa;AAAA,UACX,OAAA,EAAS,yBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,kBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,mBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,WAAA,EAAa;AAAA,UACX,OAAA,EAAS,uBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,OAAA,EAAS,0BAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,OAAA,EAAS,0BAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,kBAAA,EAAoB;AAAA,UAClB,OAAA,EAAS,8BAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,YAAA,EAAc;AAAA,UACZ,OAAA,EAAS,wBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,mBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,oBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,kBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA;AAAA,QAEA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY,gCAAA;AAAA,UACZ,MAAA,EAAQ,4BAAA;AAAA,UACR,MAAA,EAAQ,4BAAA;AAAA,UACR,mBAAA,EAAqB,uCAAA;AAAA,UACrB,KAAA,EAAO;AAAA,SACT;AAAA,QACA,OAAA,EAAS;AAAA,OACX;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,MAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAM,oBAAA;AAAA,QACN,KAAA,EAAO,qBAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,oBAAoB,CAAA;AAAA,QAC3B,IAAA,EAAM,CAAC,yBAAyB;AAAA,OAClC;AAAA,MACA,SAAA,EAAW;AAAA,QACT,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,MAAA,EAAQ,sBAAA;AAAA,QACR,gBAAA,EAAkB,8BAAA;AAAA,QAClB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,SAAA,EAAW;AAAA,QACT,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA;AAAI,SACrB;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA;AAAI,SACrB;AAAA,QACA,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,SAAA,EAAW,aAAA,EAAe,SAAS,GAAA,EAAI;AAAA,UAC/C,EAAA,EAAI,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,GAAA;AAAI,SAC5C;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,GAAA,EAAI;AAAA,UAC5C,EAAA,EAAI,EAAE,SAAA,EAAW,aAAA,EAAe,SAAS,GAAA;AAAI,SAC/C;AAAA,QACA,mBAAA,EAAqB;AAAA,UACnB,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA,EAAoB,SAAS,GAAA,EAAI;AAAA,UACpD,EAAA,EAAI,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACjD;AAAA,QACA,sBAAA,EAAwB;AAAA,UACtB,IAAA,EAAM,EAAE,SAAA,EAAW,iBAAA,EAAmB,SAAS,GAAA,EAAI;AAAA,UACnD,EAAA,EAAI,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA;AAAI,SACjD;AAAA,QACA,kBAAA,EAAoB;AAAA,UAClB,IAAA,EAAM,EAAE,SAAA,EAAW,eAAA,EAAiB,SAAS,GAAA,EAAI;AAAA,UACjD,EAAA,EAAI,EAAE,SAAA,EAAW,kBAAA,EAAoB,SAAS,GAAA;AAAI,SACpD;AAAA,QACA,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAK,WAAW,iBAAA,EAAkB;AAAA,UACnD,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA,EAAK,WAAW,eAAA;AAAgB,SACjD;AAAA,QACA,qBAAA,EAAuB;AAAA,UACrB,IAAA,EAAM,EAAE,SAAA,EAAW,kBAAA,EAAmB;AAAA,UACtC,EAAA,EAAI,EAAE,SAAA,EAAW,eAAA;AAAgB,SACnC;AAAA,QACA,oBAAA,EAAsB;AAAA,UACpB,IAAA,EAAM,EAAE,SAAA,EAAW,eAAA,EAAgB;AAAA,UACnC,EAAA,EAAI,EAAE,SAAA,EAAW,kBAAA;AAAmB,SACtC;AAAA,QACA,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAK,WAAW,kBAAA,EAAmB;AAAA,UACpD,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA,EAAK,WAAW,eAAA;AAAgB,SACjD;AAAA,QACA,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAW;AAAA,UAC9B,EAAA,EAAI,EAAE,SAAA,EAAW,aAAA;AAAc,SACjC;AAAA,QACA,WAAA,EAAa;AAAA,UACX,IAAA,EAAM,EAAE,SAAA,EAAW,YAAA,EAAa;AAAA,UAChC,KAAA,EAAO,EAAE,SAAA,EAAW,aAAA,EAAc;AAAA,UAClC,MAAA,EAAQ,EAAE,SAAA,EAAW,UAAA;AAAW,SAClC;AAAA,QACA,YAAA,EAAc;AAAA,UACZ,IAAA,EAAM,EAAE,mBAAA,EAAqB,IAAA,EAAK;AAAA,UAClC,EAAA,EAAI,EAAE,mBAAA,EAAqB,GAAA;AAAI,SACjC;AAAA,QACA,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,GAAA,EAAI;AAAA,UAC5C,KAAA,EAAO,EAAE,SAAA,EAAW,aAAA,EAAe,SAAS,GAAA,EAAI;AAAA,UAChD,MAAA,EAAQ,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,GAAA;AAAI,SAChD;AAAA,QACA,eAAA,EAAiB;AAAA,UACf,IAAA,EAAM,EAAE,SAAA,EAAW,gCAAA,EAAkC,SAAS,GAAA,EAAI;AAAA,UAClE,MAAA,EAAQ,EAAE,SAAA,EAAW,kCAAA,EAAoC,SAAS,GAAA;AAAI,SACxE;AAAA,QACA,YAAA,EAAc;AAAA,UACZ,UAAA,EAAY,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UAC3B,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA;AAAO;AAC3B,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,SAAA,EAAW,wBAAA;AAAA,QACX,UAAA,EAAY,wBAAA;AAAA,QACZ,SAAA,EAAW,wBAAA;AAAA,QACX,UAAA,EAAY,wBAAA;AAAA,QACZ,mBAAA,EAAqB,kCAAA;AAAA,QACrB,sBAAA,EAAwB,qCAAA;AAAA,QACxB,kBAAA,EAAoB,gCAAA;AAAA,QACpB,qBAAA,EAAuB,yDAAA;AAAA,QACvB,oBAAA,EAAsB,kCAAA;AAAA,QACtB,SAAA,EAAW,wBAAA;AAAA,QACX,SAAA,EAAW,kDAAA;AAAA,QACX,QAAA,EAAU,2BAAA;AAAA,QACV,WAAA,EAAa,mDAAA;AAAA,QACb,YAAA,EAAc,sCAAA;AAAA,QACd,QAAA,EAAU,qDAAA;AAAA,QACV,eAAA,EAAiB,mCAAA;AAAA,QACjB,YAAA,EAAc;AAAA;AAChB;AACF;AAEJ,CAAA;;;AClMA,IAAM,eAAe,CAAC,IAAA,EAAM,SAAS,MAAA,EAAQ,YAAA,EAAc,UAAU,aAAa,CAAA;AAClF,IAAM,IAAA,GAAO,oBAAA;AAQb,IAAM,SAAA,GAAY,eAAA;AAYX,SAAS,YAAA,CAAa,IAAA,GAA4B,EAAC,EAAW;AACnE,EAAA,MAAM,GAAA,GAAM,KAAK,MAAA,IAAU,gBAAA;AAC3B,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,CAAC,YAAsB,CAAA;AAAA,IAChC,QAAA,EAAU,OAAA;AAAA,IACV,OAAA,EAAS;AAAA,MACP,cAAA;AAAA,MACA,qBAAA;AAAA;AAAA,MAEA,GAAG,aAAa,GAAA,CAAI,CAAC,MAAM,CAAA,wBAAA,EAA2B,CAAC,CAAA,EAAG,SAAS,CAAA,CAAE,CAAA;AAAA,MACrE,+CAAA;AAAA;AAAA;AAAA,MAGA,GAAG,aAAa,GAAA,CAAI,CAAC,MAAM,CAAA,wBAAA,EAA2B,CAAC,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAAA,MAChE,oDAAA;AAAA;AAAA,MAEA,GAAG,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,GAAG,CAAA,UAAA,EAAa,CAAC,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAAA,MACxD,GAAG,GAAG,CAAA,4BAAA,CAAA;AAAA,MACN,GAAI,IAAA,CAAK,OAAA,IAAW;AAAC,KACvB;AAAA,IACA,SAAS;AAAC,GACZ;AACF","file":"tailwind.cjs","sourcesContent":["import type { Config } from 'tailwindcss'\n\n/**\n * Tailwind CSS preset for @fayz-ai/ui.\n * Include this in your tailwind.config.ts:\n *\n * import { fayzUiPreset } from '@fayz-ai/ui/theme'\n * export default { presets: [fayzUiPreset], ... }\n */\nconst fayzUiPreset: Partial<Config> = {\n darkMode: 'class',\n theme: {\n extend: {\n colors: {\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n success: {\n DEFAULT: 'hsl(var(--success))',\n foreground: 'hsl(var(--success-foreground))',\n },\n warning: {\n DEFAULT: 'hsl(var(--warning))',\n foreground: 'hsl(var(--warning-foreground))',\n },\n info: {\n DEFAULT: 'hsl(var(--info))',\n foreground: 'hsl(var(--info-foreground))',\n },\n magic: {\n DEFAULT: 'hsl(var(--magic))',\n foreground: 'hsl(var(--magic-foreground))',\n },\n 'info-soft': {\n DEFAULT: 'hsl(var(--info-soft))',\n foreground: 'hsl(var(--info-soft-foreground))',\n },\n 'success-soft': {\n DEFAULT: 'hsl(var(--success-soft))',\n foreground: 'hsl(var(--success-soft-foreground))',\n },\n 'warning-soft': {\n DEFAULT: 'hsl(var(--warning-soft))',\n foreground: 'hsl(var(--warning-soft-foreground))',\n },\n 'destructive-soft': {\n DEFAULT: 'hsl(var(--destructive-soft))',\n foreground: 'hsl(var(--destructive-soft-foreground))',\n },\n 'magic-soft': {\n DEFAULT: 'hsl(var(--magic-soft))',\n foreground: 'hsl(var(--magic-soft-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n // Layout surface tokens\n sidebar: {\n DEFAULT: 'hsl(var(--sidebar))',\n foreground: 'hsl(var(--sidebar-foreground))',\n border: 'hsl(var(--sidebar-border))',\n accent: 'hsl(var(--sidebar-accent))',\n 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',\n muted: 'hsl(var(--sidebar-muted))',\n },\n content: 'hsl(var(--content))',\n },\n borderRadius: {\n button: 'var(--button-radius)',\n card: 'var(--card-radius)',\n input: 'var(--input-radius)',\n modal: 'var(--modal-radius)',\n },\n fontFamily: {\n sans: ['var(--font-family)'],\n mono: ['var(--font-family-mono)'],\n },\n boxShadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n button: 'var(--shadow-button)',\n 'button-primary': 'var(--shadow-button-primary)',\n 'button-inset': 'var(--shadow-button-inset)',\n },\n keyframes: {\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n 'zoom-in': {\n from: { transform: 'scale(0.95)', opacity: '0' },\n to: { transform: 'scale(1)', opacity: '1' },\n },\n 'zoom-out': {\n from: { transform: 'scale(1)', opacity: '1' },\n to: { transform: 'scale(0.95)', opacity: '0' },\n },\n 'slide-in-from-top': {\n from: { transform: 'translateY(-4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n from: { transform: 'translateY(4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-out-to-top': {\n from: { transform: 'translateY(0)', opacity: '1' },\n to: { transform: 'translateY(-4px)', opacity: '0' },\n },\n 'page-in': {\n from: { opacity: '0', transform: 'translateY(6px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-from-right': {\n from: { transform: 'translateX(100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'slide-out-to-right': {\n from: { transform: 'translateX(0)' },\n to: { transform: 'translateX(100%)' },\n },\n 'fade-up': {\n from: { opacity: '0', transform: 'translateY(18px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n kenburns: {\n from: { transform: 'scale(1)' },\n to: { transform: 'scale(1.07)' },\n },\n 'badge-pop': {\n '0%': { transform: 'scale(0.6)' },\n '60%': { transform: 'scale(1.25)' },\n '100%': { transform: 'scale(1)' },\n },\n 'draw-check': {\n from: { 'stroke-dashoffset': '48' },\n to: { 'stroke-dashoffset': '0' },\n },\n 'pop-in': {\n '0%': { transform: 'scale(0)', opacity: '0' },\n '70%': { transform: 'scale(1.15)', opacity: '1' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n 'confetti-fall': {\n '0%': { transform: 'translateY(-10px) rotate(0deg)', opacity: '1' },\n '100%': { transform: 'translateY(140px) rotate(540deg)', opacity: '0' },\n },\n 'pulse-soft': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.55' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 200ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'zoom-in': 'zoom-in 200ms ease-out',\n 'zoom-out': 'zoom-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 200ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 200ms ease-out',\n 'slide-out-to-top': 'slide-out-to-top 150ms ease-in',\n 'slide-in-from-right': 'slide-in-from-right 250ms cubic-bezier(0.16, 1, 0.3, 1)',\n 'slide-out-to-right': 'slide-out-to-right 200ms ease-in',\n 'page-in': 'page-in 250ms ease-out',\n 'fade-up': 'fade-up 600ms cubic-bezier(0.16, 1, 0.3, 1) both',\n kenburns: 'kenburns 9s ease-out both',\n 'badge-pop': 'badge-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n 'draw-check': 'draw-check 600ms ease-out 250ms both',\n 'pop-in': 'pop-in 450ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n 'confetti-fall': 'confetti-fall 1100ms ease-in both',\n 'pulse-soft': 'pulse-soft 1.6s ease-in-out infinite',\n },\n },\n },\n}\n\nexport default fayzUiPreset\nexport { fayzUiPreset }\n","import type { Config } from 'tailwindcss'\nimport { fayzUiPreset } from './theme/preset'\n\nexport interface FayzTailwindOptions {\n /** Extra app-specific content globs, appended after the SDK globs. */\n content?: string[]\n /** SDK source location relative to the app root (default ../../fayz-sdk). */\n sdkDir?: string\n}\n\n// SDK packages that ship Tailwind class names the app renders.\nconst SDK_PACKAGES = ['ui', 'admin', 'saas', 'storefront', 'portal', 'app-builder'] as const\nconst GLOB = '/src/**/*.{ts,tsx}'\n// Published packages ship dist only. Tailwind generates a utility solely when it\n// finds the literal class name in a scanned file, so scanning an installed\n// package means scanning its built JS. tsup does not minify, so the strings\n// survive verbatim (\"flex flex-col space-y-1 p-4\") and the extractor reads them\n// exactly as it reads TSX. Scanning src/ under node_modules matched nothing\n// once packages stopped publishing source, which emitted a stylesheet with no\n// utilities — the app rendered fully unstyled.\nconst DIST_GLOB = '/dist/**/*.js'\n\n/**\n * Shared Tailwind config for Fayz dogfood apps. Applies the Fayz UI preset and\n * scans the SDK shell/UI/plugin source for class names — from node_modules (the\n * Fayz editor sandbox / published) and a sibling `../../fayz-sdk` checkout (local\n * dev). Whichever exists is scanned; missing globs are ignored. Apps no longer\n * hand-maintain content globs or the relative-vs-npm preset import.\n *\n * import { fayzTailwind } from '@fayz-ai/ui/tailwind'\n * export default fayzTailwind()\n */\nexport function fayzTailwind(opts: FayzTailwindOptions = {}): Config {\n const sdk = opts.sdkDir ?? '../../fayz-sdk'\n return {\n presets: [fayzUiPreset as Config],\n darkMode: 'class',\n content: [\n './index.html',\n './src/**/*.{ts,tsx}',\n // Published / sandbox: SDK installed in node_modules, which ships dist only.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${DIST_GLOB}`),\n './node_modules/@fayz-ai/plugin-*/dist/**/*.js',\n // Pre-0.10.1 installs still carry src/; a glob that matches nothing is\n // ignored, so keeping these costs nothing and keeps older pins styled.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${GLOB}`),\n './node_modules/@fayz-ai/plugin-*/src/**/*.{ts,tsx}',\n // Local dev: SDK as a sibling checkout (matches nothing in production).\n ...SDK_PACKAGES.map((p) => `${sdk}/packages/${p}${GLOB}`),\n `${sdk}/plugins/*/src/**/*.{ts,tsx}`,\n ...(opts.content ?? []),\n ],\n plugins: [],\n }\n}\n"]}
package/dist/tailwind.js CHANGED
@@ -198,7 +198,7 @@ var fayzUiPreset = {
198
198
  };
199
199
 
200
200
  // src/tailwind.ts
201
- var SDK_PACKAGES = ["ui", "admin", "saas", "storefront", "portal"];
201
+ var SDK_PACKAGES = ["ui", "admin", "saas", "storefront", "portal", "app-builder"];
202
202
  var GLOB = "/src/**/*.{ts,tsx}";
203
203
  var DIST_GLOB = "/dist/**/*.js";
204
204
  function fayzTailwind(opts = {}) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/preset.ts","../src/tailwind.ts"],"names":[],"mappings":"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","file":"tailwind.js","sourcesContent":["import type { Config } from 'tailwindcss'\n\n/**\n * Tailwind CSS preset for @fayz-ai/ui.\n * Include this in your tailwind.config.ts:\n *\n * import { fayzUiPreset } from '@fayz-ai/ui/theme'\n * export default { presets: [fayzUiPreset], ... }\n */\nconst fayzUiPreset: Partial<Config> = {\n darkMode: 'class',\n theme: {\n extend: {\n colors: {\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n success: {\n DEFAULT: 'hsl(var(--success))',\n foreground: 'hsl(var(--success-foreground))',\n },\n warning: {\n DEFAULT: 'hsl(var(--warning))',\n foreground: 'hsl(var(--warning-foreground))',\n },\n info: {\n DEFAULT: 'hsl(var(--info))',\n foreground: 'hsl(var(--info-foreground))',\n },\n magic: {\n DEFAULT: 'hsl(var(--magic))',\n foreground: 'hsl(var(--magic-foreground))',\n },\n 'info-soft': {\n DEFAULT: 'hsl(var(--info-soft))',\n foreground: 'hsl(var(--info-soft-foreground))',\n },\n 'success-soft': {\n DEFAULT: 'hsl(var(--success-soft))',\n foreground: 'hsl(var(--success-soft-foreground))',\n },\n 'warning-soft': {\n DEFAULT: 'hsl(var(--warning-soft))',\n foreground: 'hsl(var(--warning-soft-foreground))',\n },\n 'destructive-soft': {\n DEFAULT: 'hsl(var(--destructive-soft))',\n foreground: 'hsl(var(--destructive-soft-foreground))',\n },\n 'magic-soft': {\n DEFAULT: 'hsl(var(--magic-soft))',\n foreground: 'hsl(var(--magic-soft-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n // Layout surface tokens\n sidebar: {\n DEFAULT: 'hsl(var(--sidebar))',\n foreground: 'hsl(var(--sidebar-foreground))',\n border: 'hsl(var(--sidebar-border))',\n accent: 'hsl(var(--sidebar-accent))',\n 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',\n muted: 'hsl(var(--sidebar-muted))',\n },\n content: 'hsl(var(--content))',\n },\n borderRadius: {\n button: 'var(--button-radius)',\n card: 'var(--card-radius)',\n input: 'var(--input-radius)',\n modal: 'var(--modal-radius)',\n },\n fontFamily: {\n sans: ['var(--font-family)'],\n mono: ['var(--font-family-mono)'],\n },\n boxShadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n button: 'var(--shadow-button)',\n 'button-primary': 'var(--shadow-button-primary)',\n 'button-inset': 'var(--shadow-button-inset)',\n },\n keyframes: {\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n 'zoom-in': {\n from: { transform: 'scale(0.95)', opacity: '0' },\n to: { transform: 'scale(1)', opacity: '1' },\n },\n 'zoom-out': {\n from: { transform: 'scale(1)', opacity: '1' },\n to: { transform: 'scale(0.95)', opacity: '0' },\n },\n 'slide-in-from-top': {\n from: { transform: 'translateY(-4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n from: { transform: 'translateY(4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-out-to-top': {\n from: { transform: 'translateY(0)', opacity: '1' },\n to: { transform: 'translateY(-4px)', opacity: '0' },\n },\n 'page-in': {\n from: { opacity: '0', transform: 'translateY(6px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-from-right': {\n from: { transform: 'translateX(100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'slide-out-to-right': {\n from: { transform: 'translateX(0)' },\n to: { transform: 'translateX(100%)' },\n },\n 'fade-up': {\n from: { opacity: '0', transform: 'translateY(18px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n kenburns: {\n from: { transform: 'scale(1)' },\n to: { transform: 'scale(1.07)' },\n },\n 'badge-pop': {\n '0%': { transform: 'scale(0.6)' },\n '60%': { transform: 'scale(1.25)' },\n '100%': { transform: 'scale(1)' },\n },\n 'draw-check': {\n from: { 'stroke-dashoffset': '48' },\n to: { 'stroke-dashoffset': '0' },\n },\n 'pop-in': {\n '0%': { transform: 'scale(0)', opacity: '0' },\n '70%': { transform: 'scale(1.15)', opacity: '1' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n 'confetti-fall': {\n '0%': { transform: 'translateY(-10px) rotate(0deg)', opacity: '1' },\n '100%': { transform: 'translateY(140px) rotate(540deg)', opacity: '0' },\n },\n 'pulse-soft': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.55' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 200ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'zoom-in': 'zoom-in 200ms ease-out',\n 'zoom-out': 'zoom-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 200ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 200ms ease-out',\n 'slide-out-to-top': 'slide-out-to-top 150ms ease-in',\n 'slide-in-from-right': 'slide-in-from-right 250ms cubic-bezier(0.16, 1, 0.3, 1)',\n 'slide-out-to-right': 'slide-out-to-right 200ms ease-in',\n 'page-in': 'page-in 250ms ease-out',\n 'fade-up': 'fade-up 600ms cubic-bezier(0.16, 1, 0.3, 1) both',\n kenburns: 'kenburns 9s ease-out both',\n 'badge-pop': 'badge-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n 'draw-check': 'draw-check 600ms ease-out 250ms both',\n 'pop-in': 'pop-in 450ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n 'confetti-fall': 'confetti-fall 1100ms ease-in both',\n 'pulse-soft': 'pulse-soft 1.6s ease-in-out infinite',\n },\n },\n },\n}\n\nexport default fayzUiPreset\nexport { fayzUiPreset }\n","import type { Config } from 'tailwindcss'\nimport { fayzUiPreset } from './theme/preset'\n\nexport interface FayzTailwindOptions {\n /** Extra app-specific content globs, appended after the SDK globs. */\n content?: string[]\n /** SDK source location relative to the app root (default ../../fayz-sdk). */\n sdkDir?: string\n}\n\n// SDK packages that ship Tailwind class names the app renders.\nconst SDK_PACKAGES = ['ui', 'admin', 'saas', 'storefront', 'portal'] as const\nconst GLOB = '/src/**/*.{ts,tsx}'\n// Published packages ship dist only. Tailwind generates a utility solely when it\n// finds the literal class name in a scanned file, so scanning an installed\n// package means scanning its built JS. tsup does not minify, so the strings\n// survive verbatim (\"flex flex-col space-y-1 p-4\") and the extractor reads them\n// exactly as it reads TSX. Scanning src/ under node_modules matched nothing\n// once packages stopped publishing source, which emitted a stylesheet with no\n// utilities — the app rendered fully unstyled.\nconst DIST_GLOB = '/dist/**/*.js'\n\n/**\n * Shared Tailwind config for Fayz dogfood apps. Applies the Fayz UI preset and\n * scans the SDK shell/UI/plugin source for class names — from node_modules (the\n * Fayz editor sandbox / published) and a sibling `../../fayz-sdk` checkout (local\n * dev). Whichever exists is scanned; missing globs are ignored. Apps no longer\n * hand-maintain content globs or the relative-vs-npm preset import.\n *\n * import { fayzTailwind } from '@fayz-ai/ui/tailwind'\n * export default fayzTailwind()\n */\nexport function fayzTailwind(opts: FayzTailwindOptions = {}): Config {\n const sdk = opts.sdkDir ?? '../../fayz-sdk'\n return {\n presets: [fayzUiPreset as Config],\n darkMode: 'class',\n content: [\n './index.html',\n './src/**/*.{ts,tsx}',\n // Published / sandbox: SDK installed in node_modules, which ships dist only.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${DIST_GLOB}`),\n './node_modules/@fayz-ai/plugin-*/dist/**/*.js',\n // Pre-0.10.1 installs still carry src/; a glob that matches nothing is\n // ignored, so keeping these costs nothing and keeps older pins styled.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${GLOB}`),\n './node_modules/@fayz-ai/plugin-*/src/**/*.{ts,tsx}',\n // Local dev: SDK as a sibling checkout (matches nothing in production).\n ...SDK_PACKAGES.map((p) => `${sdk}/packages/${p}${GLOB}`),\n `${sdk}/plugins/*/src/**/*.{ts,tsx}`,\n ...(opts.content ?? []),\n ],\n plugins: [],\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/preset.ts","../src/tailwind.ts"],"names":[],"mappings":"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","file":"tailwind.js","sourcesContent":["import type { Config } from 'tailwindcss'\n\n/**\n * Tailwind CSS preset for @fayz-ai/ui.\n * Include this in your tailwind.config.ts:\n *\n * import { fayzUiPreset } from '@fayz-ai/ui/theme'\n * export default { presets: [fayzUiPreset], ... }\n */\nconst fayzUiPreset: Partial<Config> = {\n darkMode: 'class',\n theme: {\n extend: {\n colors: {\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n success: {\n DEFAULT: 'hsl(var(--success))',\n foreground: 'hsl(var(--success-foreground))',\n },\n warning: {\n DEFAULT: 'hsl(var(--warning))',\n foreground: 'hsl(var(--warning-foreground))',\n },\n info: {\n DEFAULT: 'hsl(var(--info))',\n foreground: 'hsl(var(--info-foreground))',\n },\n magic: {\n DEFAULT: 'hsl(var(--magic))',\n foreground: 'hsl(var(--magic-foreground))',\n },\n 'info-soft': {\n DEFAULT: 'hsl(var(--info-soft))',\n foreground: 'hsl(var(--info-soft-foreground))',\n },\n 'success-soft': {\n DEFAULT: 'hsl(var(--success-soft))',\n foreground: 'hsl(var(--success-soft-foreground))',\n },\n 'warning-soft': {\n DEFAULT: 'hsl(var(--warning-soft))',\n foreground: 'hsl(var(--warning-soft-foreground))',\n },\n 'destructive-soft': {\n DEFAULT: 'hsl(var(--destructive-soft))',\n foreground: 'hsl(var(--destructive-soft-foreground))',\n },\n 'magic-soft': {\n DEFAULT: 'hsl(var(--magic-soft))',\n foreground: 'hsl(var(--magic-soft-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n // Layout surface tokens\n sidebar: {\n DEFAULT: 'hsl(var(--sidebar))',\n foreground: 'hsl(var(--sidebar-foreground))',\n border: 'hsl(var(--sidebar-border))',\n accent: 'hsl(var(--sidebar-accent))',\n 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',\n muted: 'hsl(var(--sidebar-muted))',\n },\n content: 'hsl(var(--content))',\n },\n borderRadius: {\n button: 'var(--button-radius)',\n card: 'var(--card-radius)',\n input: 'var(--input-radius)',\n modal: 'var(--modal-radius)',\n },\n fontFamily: {\n sans: ['var(--font-family)'],\n mono: ['var(--font-family-mono)'],\n },\n boxShadow: {\n sm: 'var(--shadow-sm)',\n md: 'var(--shadow-md)',\n lg: 'var(--shadow-lg)',\n button: 'var(--shadow-button)',\n 'button-primary': 'var(--shadow-button-primary)',\n 'button-inset': 'var(--shadow-button-inset)',\n },\n keyframes: {\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n 'zoom-in': {\n from: { transform: 'scale(0.95)', opacity: '0' },\n to: { transform: 'scale(1)', opacity: '1' },\n },\n 'zoom-out': {\n from: { transform: 'scale(1)', opacity: '1' },\n to: { transform: 'scale(0.95)', opacity: '0' },\n },\n 'slide-in-from-top': {\n from: { transform: 'translateY(-4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n from: { transform: 'translateY(4px)', opacity: '0' },\n to: { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-out-to-top': {\n from: { transform: 'translateY(0)', opacity: '1' },\n to: { transform: 'translateY(-4px)', opacity: '0' },\n },\n 'page-in': {\n from: { opacity: '0', transform: 'translateY(6px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-from-right': {\n from: { transform: 'translateX(100%)' },\n to: { transform: 'translateX(0)' },\n },\n 'slide-out-to-right': {\n from: { transform: 'translateX(0)' },\n to: { transform: 'translateX(100%)' },\n },\n 'fade-up': {\n from: { opacity: '0', transform: 'translateY(18px)' },\n to: { opacity: '1', transform: 'translateY(0)' },\n },\n kenburns: {\n from: { transform: 'scale(1)' },\n to: { transform: 'scale(1.07)' },\n },\n 'badge-pop': {\n '0%': { transform: 'scale(0.6)' },\n '60%': { transform: 'scale(1.25)' },\n '100%': { transform: 'scale(1)' },\n },\n 'draw-check': {\n from: { 'stroke-dashoffset': '48' },\n to: { 'stroke-dashoffset': '0' },\n },\n 'pop-in': {\n '0%': { transform: 'scale(0)', opacity: '0' },\n '70%': { transform: 'scale(1.15)', opacity: '1' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n 'confetti-fall': {\n '0%': { transform: 'translateY(-10px) rotate(0deg)', opacity: '1' },\n '100%': { transform: 'translateY(140px) rotate(540deg)', opacity: '0' },\n },\n 'pulse-soft': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.55' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 200ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'zoom-in': 'zoom-in 200ms ease-out',\n 'zoom-out': 'zoom-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 200ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 200ms ease-out',\n 'slide-out-to-top': 'slide-out-to-top 150ms ease-in',\n 'slide-in-from-right': 'slide-in-from-right 250ms cubic-bezier(0.16, 1, 0.3, 1)',\n 'slide-out-to-right': 'slide-out-to-right 200ms ease-in',\n 'page-in': 'page-in 250ms ease-out',\n 'fade-up': 'fade-up 600ms cubic-bezier(0.16, 1, 0.3, 1) both',\n kenburns: 'kenburns 9s ease-out both',\n 'badge-pop': 'badge-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1)',\n 'draw-check': 'draw-check 600ms ease-out 250ms both',\n 'pop-in': 'pop-in 450ms cubic-bezier(0.34, 1.56, 0.64, 1) both',\n 'confetti-fall': 'confetti-fall 1100ms ease-in both',\n 'pulse-soft': 'pulse-soft 1.6s ease-in-out infinite',\n },\n },\n },\n}\n\nexport default fayzUiPreset\nexport { fayzUiPreset }\n","import type { Config } from 'tailwindcss'\nimport { fayzUiPreset } from './theme/preset'\n\nexport interface FayzTailwindOptions {\n /** Extra app-specific content globs, appended after the SDK globs. */\n content?: string[]\n /** SDK source location relative to the app root (default ../../fayz-sdk). */\n sdkDir?: string\n}\n\n// SDK packages that ship Tailwind class names the app renders.\nconst SDK_PACKAGES = ['ui', 'admin', 'saas', 'storefront', 'portal', 'app-builder'] as const\nconst GLOB = '/src/**/*.{ts,tsx}'\n// Published packages ship dist only. Tailwind generates a utility solely when it\n// finds the literal class name in a scanned file, so scanning an installed\n// package means scanning its built JS. tsup does not minify, so the strings\n// survive verbatim (\"flex flex-col space-y-1 p-4\") and the extractor reads them\n// exactly as it reads TSX. Scanning src/ under node_modules matched nothing\n// once packages stopped publishing source, which emitted a stylesheet with no\n// utilities — the app rendered fully unstyled.\nconst DIST_GLOB = '/dist/**/*.js'\n\n/**\n * Shared Tailwind config for Fayz dogfood apps. Applies the Fayz UI preset and\n * scans the SDK shell/UI/plugin source for class names — from node_modules (the\n * Fayz editor sandbox / published) and a sibling `../../fayz-sdk` checkout (local\n * dev). Whichever exists is scanned; missing globs are ignored. Apps no longer\n * hand-maintain content globs or the relative-vs-npm preset import.\n *\n * import { fayzTailwind } from '@fayz-ai/ui/tailwind'\n * export default fayzTailwind()\n */\nexport function fayzTailwind(opts: FayzTailwindOptions = {}): Config {\n const sdk = opts.sdkDir ?? '../../fayz-sdk'\n return {\n presets: [fayzUiPreset as Config],\n darkMode: 'class',\n content: [\n './index.html',\n './src/**/*.{ts,tsx}',\n // Published / sandbox: SDK installed in node_modules, which ships dist only.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${DIST_GLOB}`),\n './node_modules/@fayz-ai/plugin-*/dist/**/*.js',\n // Pre-0.10.1 installs still carry src/; a glob that matches nothing is\n // ignored, so keeping these costs nothing and keeps older pins styled.\n ...SDK_PACKAGES.map((p) => `./node_modules/@fayz-ai/${p}${GLOB}`),\n './node_modules/@fayz-ai/plugin-*/src/**/*.{ts,tsx}',\n // Local dev: SDK as a sibling checkout (matches nothing in production).\n ...SDK_PACKAGES.map((p) => `${sdk}/packages/${p}${GLOB}`),\n `${sdk}/plugins/*/src/**/*.{ts,tsx}`,\n ...(opts.content ?? []),\n ],\n plugins: [],\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- export { Wizard, WizardField, canAdvance, fieldErrors, isEmpty, parseDraft, useWizard, visibleFields, visibleSteps } from '../chunk-AASANYXN.js';
2
- import '../chunk-3OVZ5JJQ.js';
1
+ export { Wizard, WizardField, canAdvance, fieldErrors, isEmpty, parseDraft, useWizard, visibleFields, visibleSteps } from '../chunk-OB2ULDBD.js';
2
+ import '../chunk-GLRLWBBF.js';
3
3
  import '../chunk-OKZ6WQB3.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/useWizard.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1C,wFAAwF;IACxF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,oEAAoE;IACpE,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iFAAiF;IACjF,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC9B,6EAA6E;IAC7E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAWD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,eAAe,CAgQzG"}
1
+ {"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/useWizard.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1C,wFAAwF;IACxF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,oEAAoE;IACpE,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iFAAiF;IACjF,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC9B,6EAA6E;IAC7E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAWD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,eAAe,CAmQzG"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.18.0",
6
+ "version": "0.21.0",
7
7
  "description": "Fayz SDK UI — Radix + Tailwind component library with CRUD engine and layout shells",
8
8
  "type": "module",
9
9
  "sideEffects": [
@@ -79,7 +79,7 @@
79
79
  "clsx": "^2.1.0",
80
80
  "recharts": "^2.15.0",
81
81
  "tailwind-merge": "^2.4.0",
82
- "@fayz-ai/core": "^0.18.0"
82
+ "@fayz-ai/core": "^0.21.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@types/react": "^18.3.0",