@beyondcorp/beyond-ui 1.2.83 → 1.2.85

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 (59) hide show
  1. package/README.md +394 -394
  2. package/dist/components/Alert/Alert.example.js.map +1 -1
  3. package/dist/components/Auth/LoginForm.example.js.map +1 -1
  4. package/dist/components/Auth/PasswordResetForm.example.js.map +1 -1
  5. package/dist/components/Auth/PasswordResetForm.js.map +1 -1
  6. package/dist/components/Auth/ProtectedRoute.example.js.map +1 -1
  7. package/dist/components/Auth/SignupForm.example.js.map +1 -1
  8. package/dist/components/Avatar/Avatar.example.js.map +1 -1
  9. package/dist/components/Badge/Badge.example.js.map +1 -1
  10. package/dist/components/Blog/BlogShowcase.js +36 -36
  11. package/dist/components/Blog/BlogShowcase.js.map +1 -1
  12. package/dist/components/Button/Button.example.js.map +1 -1
  13. package/dist/components/Card/Card.example.js.map +1 -1
  14. package/dist/components/Card/Card.js.map +1 -1
  15. package/dist/components/Checkbox/Checkbox.example.js.map +1 -1
  16. package/dist/components/CodeHighlight/CodeHighlight.js.map +1 -1
  17. package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
  18. package/dist/components/ComponentShowcase/componentDocs.js +21 -21
  19. package/dist/components/ComponentShowcase/componentDocs.js.map +1 -1
  20. package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -1
  21. package/dist/components/DashboardGrid/DashboardGrid.example.js.map +1 -1
  22. package/dist/components/DashboardGrid/DashboardGrid.js.map +1 -1
  23. package/dist/components/DashboardHeader/DashboardHeader.example.js.map +1 -1
  24. package/dist/components/DashboardLayout/DashboardLayout.example.js.map +1 -1
  25. package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -1
  26. package/dist/components/DataTable/DataTable.js +2 -2
  27. package/dist/components/DataTable/DataTable.js.map +1 -1
  28. package/dist/components/Image/Image.js.map +1 -1
  29. package/dist/components/Input/Input.example.js.map +1 -1
  30. package/dist/components/Marketplace/AllProductsView.js.map +1 -1
  31. package/dist/components/Marketplace/MarketplaceComponent.js.map +1 -1
  32. package/dist/components/Marketplace/MarketplaceSidebar.js.map +1 -1
  33. package/dist/components/Marketplace/components/MarketplaceControls.js.map +1 -1
  34. package/dist/components/Marketplace/components/MarketplaceHeader.js.map +1 -1
  35. package/dist/components/Marketplace/components/ProductCard.js.map +1 -1
  36. package/dist/components/Marketplace/hooks/useScrollToTop.js.map +1 -1
  37. package/dist/components/Marketplace/utils/sanitizeProduct.js.map +1 -1
  38. package/dist/components/Modal/Modal.example.js.map +1 -1
  39. package/dist/components/Modal/Modal.js.map +1 -1
  40. package/dist/components/Navbar/Navbar.example.js.map +1 -1
  41. package/dist/components/NightModeSwitch/NightModeSwitch.js.map +1 -1
  42. package/dist/components/ProfileManagement/EditModal.js.map +1 -1
  43. package/dist/components/ProfileManagement/ProfileCard.js.map +1 -1
  44. package/dist/components/Radio/Radio.js.map +1 -1
  45. package/dist/components/Select/Select.js.map +1 -1
  46. package/dist/components/Sidebar/LogoutButton.js.map +1 -1
  47. package/dist/components/Sidebar/ProfileButton.js.map +1 -1
  48. package/dist/components/Sidebar/Sidebar.example.js.map +1 -1
  49. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  50. package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
  51. package/dist/components/Skeleton/Skeleton.example.js.map +1 -1
  52. package/dist/components/Spinner/Spinner.example.js.map +1 -1
  53. package/dist/components/StatsCard/StatsCard.example.js.map +1 -1
  54. package/dist/components/Switch/Switch.example.js.map +1 -1
  55. package/dist/components/Tabs/Tabs.example.js.map +1 -1
  56. package/dist/components/Textarea/Textarea.example.js.map +1 -1
  57. package/dist/components/Toast/Toast.example.js.map +1 -1
  58. package/dist/hooks/useIntersectionObserver.js.map +1 -1
  59. package/package.json +113 -113
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollToTop.js","sources":["../../../../src/components/Marketplace/hooks/useScrollToTop.ts"],"sourcesContent":["import { useEffect } from \"react\";\r\n\r\n/**\r\n * Reusable hook to scroll window or a container to top when dependencies change.\r\n * - If a ref is provided, scrolls the container.\r\n * - Otherwise, scrolls the window.\r\n * - Designed for use in product/detail views to ensure correct navigation UX.\r\n *\r\n * @param deps Dependency array (e.g., [product])\r\n * @param ref Optional: React ref to a scrollable container\r\n */\r\nexport function useScrollToTop(deps: any[] = [], ref?: React.RefObject<HTMLElement>) {\r\n useEffect(() => {\r\n if (ref?.current) {\r\n ref.current.scrollTo({ top: 0, behavior: \"smooth\" });\r\n } else {\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}"],"names":[],"mappings":";;AAEA;;;;;;;;AAQG;SACa,cAAc,CAAC,IAAA,GAAc,EAAE,EAAE,GAAkC,EAAA;IACjF,SAAS,CAAC,MAAK;AACb,QAEO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACjD;;IAEF,CAAC,EAAE,IAAI,CAAC;AACV;;;;"}
1
+ {"version":3,"file":"useScrollToTop.js","sources":["../../../../src/components/Marketplace/hooks/useScrollToTop.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Reusable hook to scroll window or a container to top when dependencies change.\n * - If a ref is provided, scrolls the container.\n * - Otherwise, scrolls the window.\n * - Designed for use in product/detail views to ensure correct navigation UX.\n *\n * @param deps Dependency array (e.g., [product])\n * @param ref Optional: React ref to a scrollable container\n */\nexport function useScrollToTop(deps: any[] = [], ref?: React.RefObject<HTMLElement>) {\n useEffect(() => {\n if (ref?.current) {\n ref.current.scrollTo({ top: 0, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}"],"names":[],"mappings":";;AAEA;;;;;;;;AAQG;SACa,cAAc,CAAC,IAAA,GAAc,EAAE,EAAE,GAAkC,EAAA;IACjF,SAAS,CAAC,MAAK;AACb,QAEO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACjD;;IAEF,CAAC,EAAE,IAAI,CAAC;AACV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeProduct.js","sources":["../../../../src/components/Marketplace/utils/sanitizeProduct.ts"],"sourcesContent":["import type { Product } from \"../types\";\r\n\r\n/**\r\n * Ensures a Product object has all required fields and valid defaults.\r\n * Returns a sanitized copy of the product.\r\n */\r\nexport function sanitizeProduct(product: Partial<Product>): Product {\r\n return {\r\n id: product.id ?? \"unknown\",\r\n name: product.name ?? \"Unnamed Product\",\r\n description: product.description ?? \"No description available.\",\r\n price: typeof product.price === \"number\" ? product.price : 0,\r\n originalPrice: typeof product.originalPrice === \"number\" ? product.originalPrice : undefined,\r\n discount: typeof product.discount === \"number\" ? product.discount : undefined,\r\n images: Array.isArray(product.images) && product.images.length > 0\r\n ? product.images\r\n : [\"https://images.pexels.com/photos/2255935/pexels-photo-2255935.jpeg\"],\r\n category: product.category ?? \"Misc\",\r\n brand: product.brand ?? \"Unknown\",\r\n rating: typeof product.rating === \"number\" ? product.rating : 0,\r\n reviewCount: typeof product.reviewCount === \"number\" ? product.reviewCount : 0,\r\n inStock: typeof product.inStock === \"boolean\" ? product.inStock : false,\r\n specifications: product.specifications && Object.keys(product.specifications).length > 0\r\n ? product.specifications\r\n : { \"Info\": \"No specifications available\" },\r\n tags: Array.isArray(product.tags) ? product.tags : [],\r\n vendor: product.vendor && product.vendor.name\r\n ? {\r\n id: product.vendor.id ?? \"unknown\",\r\n name: product.vendor.name,\r\n rating: typeof product.vendor.rating === \"number\" ? product.vendor.rating : 0,\r\n logo: product.vendor.logo,\r\n }\r\n : {\r\n id: \"unknown\",\r\n name: \"Unknown Vendor\",\r\n rating: 0,\r\n logo: undefined,\r\n },\r\n };\r\n}"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAyB,EAAA;IACvD,OAAO;AACL,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;AAC3B,QAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;AACvC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,2BAA2B;AAC/D,QAAA,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAC5D,QAAA,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS;AAC5F,QAAA,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS;AAC7E,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG;cAC7D,OAAO,CAAC;cACR,CAAC,oEAAoE,CAAC;AAC1E,QAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACpC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACjC,QAAA,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAC/D,QAAA,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAC9E,QAAA,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK;AACvE,QAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG;cACnF,OAAO,CAAC;AACV,cAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;AAC7C,QAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AACvC,cAAE;AACE,gBAAA,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;AAClC,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACzB,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7E,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;AAC1B;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;KACN;AACH;;;;"}
1
+ {"version":3,"file":"sanitizeProduct.js","sources":["../../../../src/components/Marketplace/utils/sanitizeProduct.ts"],"sourcesContent":["import type { Product } from \"../types\";\n\n/**\n * Ensures a Product object has all required fields and valid defaults.\n * Returns a sanitized copy of the product.\n */\nexport function sanitizeProduct(product: Partial<Product>): Product {\n return {\n id: product.id ?? \"unknown\",\n name: product.name ?? \"Unnamed Product\",\n description: product.description ?? \"No description available.\",\n price: typeof product.price === \"number\" ? product.price : 0,\n originalPrice: typeof product.originalPrice === \"number\" ? product.originalPrice : undefined,\n discount: typeof product.discount === \"number\" ? product.discount : undefined,\n images: Array.isArray(product.images) && product.images.length > 0\n ? product.images\n : [\"https://images.pexels.com/photos/2255935/pexels-photo-2255935.jpeg\"],\n category: product.category ?? \"Misc\",\n brand: product.brand ?? \"Unknown\",\n rating: typeof product.rating === \"number\" ? product.rating : 0,\n reviewCount: typeof product.reviewCount === \"number\" ? product.reviewCount : 0,\n inStock: typeof product.inStock === \"boolean\" ? product.inStock : false,\n specifications: product.specifications && Object.keys(product.specifications).length > 0\n ? product.specifications\n : { \"Info\": \"No specifications available\" },\n tags: Array.isArray(product.tags) ? product.tags : [],\n vendor: product.vendor && product.vendor.name\n ? {\n id: product.vendor.id ?? \"unknown\",\n name: product.vendor.name,\n rating: typeof product.vendor.rating === \"number\" ? product.vendor.rating : 0,\n logo: product.vendor.logo,\n }\n : {\n id: \"unknown\",\n name: \"Unknown Vendor\",\n rating: 0,\n logo: undefined,\n },\n };\n}"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAyB,EAAA;IACvD,OAAO;AACL,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;AAC3B,QAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;AACvC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,2BAA2B;AAC/D,QAAA,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAC5D,QAAA,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS;AAC5F,QAAA,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS;AAC7E,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG;cAC7D,OAAO,CAAC;cACR,CAAC,oEAAoE,CAAC;AAC1E,QAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACpC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACjC,QAAA,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAC/D,QAAA,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAC9E,QAAA,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK;AACvE,QAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG;cACnF,OAAO,CAAC;AACV,cAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;AAC7C,QAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AACvC,cAAE;AACE,gBAAA,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;AAClC,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACzB,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7E,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;AAC1B;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;KACN;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.example.js","sources":["../../../src/components/Modal/Modal.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalTitle, ModalContent, ModalFooter } from \"./Modal\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const ModalExample: React.FC = () => {\r\n const [open, setOpen] = React.useState(false);\r\n return (\r\n <div>\r\n <Button onClick={() => setOpen(true)}>Show Modal</Button>\r\n <Modal open={open} onOpenChange={setOpen}>\r\n <ModalHeader>\r\n <ModalTitle>Demo Modal</ModalTitle>\r\n </ModalHeader>\r\n <ModalContent>\r\n <p>This is a basic modal dialog.</p>\r\n </ModalContent>\r\n <ModalFooter>\r\n <Button variant=\"primary\" onClick={() => setOpen(false)}>Close</Button>\r\n </ModalFooter>\r\n </Modal>\r\n </div>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIO,MAAM,YAAY,GAAa,MAAK;AACzC,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAAqB,EACzDD,IAAA,CAAC,KAAK,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,WAAW,cACVA,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAwB,EAAA,CACvB,EACdA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,GAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAoC,EAAA,CACvB,EACfA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,OAAA,EAAA,CAAgB,EAAA,CAC3D,CAAA,EAAA,CACR,CAAA,EAAA,CACJ;AAEV;;;;"}
1
+ {"version":3,"file":"Modal.example.js","sources":["../../../src/components/Modal/Modal.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Modal, ModalHeader, ModalTitle, ModalContent, ModalFooter } from \"./Modal\";\nimport { Button } from \"../Button\";\n\nexport const ModalExample: React.FC = () => {\n const [open, setOpen] = React.useState(false);\n return (\n <div>\n <Button onClick={() => setOpen(true)}>Show Modal</Button>\n <Modal open={open} onOpenChange={setOpen}>\n <ModalHeader>\n <ModalTitle>Demo Modal</ModalTitle>\n </ModalHeader>\n <ModalContent>\n <p>This is a basic modal dialog.</p>\n </ModalContent>\n <ModalFooter>\n <Button variant=\"primary\" onClick={() => setOpen(false)}>Close</Button>\n </ModalFooter>\n </Modal>\n </div>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIO,MAAM,YAAY,GAAa,MAAK;AACzC,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAAqB,EACzDD,IAAA,CAAC,KAAK,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,WAAW,cACVA,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAwB,EAAA,CACvB,EACdA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,GAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAoC,EAAA,CACvB,EACfA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,OAAA,EAAA,CAAgB,EAAA,CAC3D,CAAA,EAAA,CACR,CAAA,EAAA,CACJ;AAEV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst modalVariants = cva(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 sm:rounded-lg\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-lg\",\r\n lg: \"max-w-2xl\",\r\n xl: \"max-w-4xl\",\r\n full: \"max-w-[95vw] max-h-[95vh]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\ninterface ModalProps extends VariantProps<typeof modalVariants> {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({ \r\n open, \r\n onOpenChange, \r\n children, \r\n size,\r\n}) => {\r\n const handleClose = () => {\r\n onOpenChange?.(false);\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <>\r\n {/* Backdrop */}\r\n <div\r\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\r\n onClick={handleClose}\r\n />\r\n \r\n {/* Modal Content */}\r\n <div className={cn(modalVariants({ size }))}>\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nconst ModalHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <h2\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <p\r\n className={cn(\"text-sm text-gray-500\", className)}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div className={cn(\"grid gap-4 py-4\", className)} {...props} />\r\n);\r\n\r\nconst ModalFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nexport {\r\n Modal,\r\n ModalHeader,\r\n ModalTitle,\r\n ModalDescription,\r\n ModalContent,\r\n ModalFooter,\r\n modalVariants,\r\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;AAKA,MAAM,aAAa,GAAG,GAAG,CACvB,2JAA2J,EAC3J;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AASH,MAAM,KAAK,GAAyB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,IAAI,GACL,KAAI;IACH,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,YAAY,GAAG,KAAK,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,iDAAiD,EAC3D,OAAO,EAAE,WAAW,EAAA,CACpB,EAGFF,cAAK,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CACzCA,IAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,6MAA6M,aAEvNE,GAAA,CAAC,CAAC,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EACzBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,EACR,QAAQ,CAAA,EAAA,CACL,CAAA,EAAA,CACL;AAEP;AAEA,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,UAAU,GAAuD,CAAC,EACtE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,YACE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,gBAAgB,GAAyD,CAAC,EAC9E,SAAS,EACT,GAAG,KAAK,EACT,MACCA,WACE,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAA,GAC7C,KAAK,EAAA,CACT;AAGJ,MAAM,YAAY,GAAmD,CAAC,EACpE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI;AAGjE,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;;;;"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst modalVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 sm:rounded-lg\",\n {\n variants: {\n size: {\n sm: \"max-w-sm\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-[95vw] max-h-[95vh]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\ninterface ModalProps extends VariantProps<typeof modalVariants> {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({ \n open, \n onOpenChange, \n children, \n size,\n}) => {\n const handleClose = () => {\n onOpenChange?.(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\n onClick={handleClose}\n />\n \n {/* Modal Content */}\n <div className={cn(modalVariants({ size }))}>\n <button\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </button>\n {children}\n </div>\n </>\n );\n};\n\nconst ModalHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\n\nconst ModalTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\n className,\n ...props\n}) => (\n <h2\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n);\n\nconst ModalDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\n className,\n ...props\n}) => (\n <p\n className={cn(\"text-sm text-gray-500\", className)}\n {...props}\n />\n);\n\nconst ModalContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div className={cn(\"grid gap-4 py-4\", className)} {...props} />\n);\n\nconst ModalFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\n\nexport {\n Modal,\n ModalHeader,\n ModalTitle,\n ModalDescription,\n ModalContent,\n ModalFooter,\n modalVariants,\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;AAKA,MAAM,aAAa,GAAG,GAAG,CACvB,2JAA2J,EAC3J;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AASH,MAAM,KAAK,GAAyB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,IAAI,GACL,KAAI;IACH,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,YAAY,GAAG,KAAK,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,iDAAiD,EAC3D,OAAO,EAAE,WAAW,EAAA,CACpB,EAGFF,cAAK,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CACzCA,IAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,6MAA6M,aAEvNE,GAAA,CAAC,CAAC,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EACzBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,EACR,QAAQ,CAAA,EAAA,CACL,CAAA,EAAA,CACL;AAEP;AAEA,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,UAAU,GAAuD,CAAC,EACtE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,YACE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,gBAAgB,GAAyD,CAAC,EAC9E,SAAS,EACT,GAAG,KAAK,EACT,MACCA,WACE,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAA,GAC7C,KAAK,EAAA,CACT;AAGJ,MAAM,YAAY,GAAmD,CAAC,EACpE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI;AAGjE,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Navbar.example.js","sources":["../../../src/components/Navbar/Navbar.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Navbar } from \"./Navbar\";\r\nimport { NightModeSwitch } from \"../NightModeSwitch\";\r\n\r\nexport const NavbarExample: React.FC = () => (\r\n <Navbar>\r\n <div className=\"flex items-center gap-4 px-4 w-full\">\r\n <span className=\"font-bold text-xl\">My App</span>\r\n <nav className=\"flex gap-2 ml-auto\">\r\n <a href=\"/\" className=\"text-blue-500\">Home</a>\r\n <a href=\"/about\" className=\"text-blue-500\">About</a>\r\n </nav>\r\n <NightModeSwitch className=\"ml-4\" variant=\"ghost\" size=\"md\" ariaLabel=\"Toggle dark mode\" />\r\n </div>\r\n </Navbar>\r\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIO,MAAM,aAAa,GAAa,OACrCA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EACLC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CAClDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACjDC,cAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCD,WAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,MAAA,EAAA,CAAS,EAC9CA,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,OAAA,EAAA,CAAU,CAAA,EAAA,CAChD,EACNA,GAAA,CAAC,eAAe,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,kBAAkB,EAAA,CAAG,CAAA,EAAA,CACvF,EAAA,CACC;;;;"}
1
+ {"version":3,"file":"Navbar.example.js","sources":["../../../src/components/Navbar/Navbar.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Navbar } from \"./Navbar\";\nimport { NightModeSwitch } from \"../NightModeSwitch\";\n\nexport const NavbarExample: React.FC = () => (\n <Navbar>\n <div className=\"flex items-center gap-4 px-4 w-full\">\n <span className=\"font-bold text-xl\">My App</span>\n <nav className=\"flex gap-2 ml-auto\">\n <a href=\"/\" className=\"text-blue-500\">Home</a>\n <a href=\"/about\" className=\"text-blue-500\">About</a>\n </nav>\n <NightModeSwitch className=\"ml-4\" variant=\"ghost\" size=\"md\" ariaLabel=\"Toggle dark mode\" />\n </div>\n </Navbar>\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIO,MAAM,aAAa,GAAa,OACrCA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EACLC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CAClDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACjDC,cAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCD,WAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,MAAA,EAAA,CAAS,EAC9CA,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,OAAA,EAAA,CAAU,CAAA,EAAA,CAChD,EACNA,GAAA,CAAC,eAAe,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,kBAAkB,EAAA,CAAG,CAAA,EAAA,CACvF,EAAA,CACC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NightModeSwitch.js","sources":["../../../src/components/NightModeSwitch/NightModeSwitch.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\r\nimport { Sun, Moon } from \"lucide-react\";\r\n\r\nconst switchVariants = cva(\r\n \"inline-flex items-center justify-center rounded-full transition focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400\",\r\n {\r\n variants: {\r\n variant: {\r\n primary: \"bg-primary-600 text-white hover:bg-primary-700 dark:bg-primary-400 dark:text-gray-900 dark:hover:bg-primary-500\",\r\n secondary: \"bg-secondary-600 text-white hover:bg-secondary-700 dark:bg-secondary-400 dark:text-gray-900 dark:hover:bg-secondary-500\",\r\n ghost: \"bg-transparent hover:bg-primary-100 dark:hover:bg-primary-900 text-primary-600 dark:text-primary-300\",\r\n },\r\n size: {\r\n sm: \"w-8 h-8 text-base\",\r\n md: \"w-10 h-10 text-lg\",\r\n lg: \"w-12 h-12 text-xl\",\r\n },\r\n iconStyle: {\r\n filled: \"\",\r\n outline: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"ghost\",\r\n size: \"md\",\r\n iconStyle: \"filled\",\r\n },\r\n }\r\n);\r\n\r\nexport interface NightModeSwitchProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof switchVariants> {\r\n ariaLabel?: string;\r\n}\r\n\r\nexport const NightModeSwitch = React.forwardRef<HTMLButtonElement, NightModeSwitchProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n iconStyle,\r\n ariaLabel = \"Toggle dark mode\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { isDarkMode, toggle } = useDarkMode();\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n ref={ref}\r\n aria-label={ariaLabel}\r\n aria-pressed={isDarkMode}\r\n className={cn(switchVariants({ variant, size, iconStyle, className }))}\r\n onClick={toggle}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{ariaLabel}</span>\r\n {isDarkMode ? (\r\n <Moon\r\n className=\"w-5 h-5\"\r\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\r\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\r\n aria-hidden=\"true\"\r\n />\r\n ) : (\r\n <Sun\r\n className=\"w-5 h-5\"\r\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\r\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nNightModeSwitch.displayName = \"NightModeSwitch\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,oJAAoJ,EACpJ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iHAAiH;AAC1H,YAAA,SAAS,EAAE,yHAAyH;AACpI,YAAA,KAAK,EAAE,sGAAsG;AAC9G,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA;AACF,CAAA,CACF;AAQM,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CACE,EACE,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,kBAAkB,EAC9B,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAE5C,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,EAAA,YAAA,EACI,SAAS,EAAA,cAAA,EACP,UAAU,EACxB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EACtE,OAAO,EAAE,MAAM,EAAA,GACX,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,SAAS,EAAA,CAAQ,EAC3C,UAAU,IACTA,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,KAEFA,GAAA,CAAC,GAAG,EAAA,EACF,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,CACH,CAAA,EAAA,CACM;AAEb,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,iBAAiB;;;;"}
1
+ {"version":3,"file":"NightModeSwitch.js","sources":["../../../src/components/NightModeSwitch/NightModeSwitch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\nimport { Sun, Moon } from \"lucide-react\";\n\nconst switchVariants = cva(\n \"inline-flex items-center justify-center rounded-full transition focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400\",\n {\n variants: {\n variant: {\n primary: \"bg-primary-600 text-white hover:bg-primary-700 dark:bg-primary-400 dark:text-gray-900 dark:hover:bg-primary-500\",\n secondary: \"bg-secondary-600 text-white hover:bg-secondary-700 dark:bg-secondary-400 dark:text-gray-900 dark:hover:bg-secondary-500\",\n ghost: \"bg-transparent hover:bg-primary-100 dark:hover:bg-primary-900 text-primary-600 dark:text-primary-300\",\n },\n size: {\n sm: \"w-8 h-8 text-base\",\n md: \"w-10 h-10 text-lg\",\n lg: \"w-12 h-12 text-xl\",\n },\n iconStyle: {\n filled: \"\",\n outline: \"\",\n },\n },\n defaultVariants: {\n variant: \"ghost\",\n size: \"md\",\n iconStyle: \"filled\",\n },\n }\n);\n\nexport interface NightModeSwitchProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof switchVariants> {\n ariaLabel?: string;\n}\n\nexport const NightModeSwitch = React.forwardRef<HTMLButtonElement, NightModeSwitchProps>(\n (\n {\n className,\n variant,\n size,\n iconStyle,\n ariaLabel = \"Toggle dark mode\",\n ...props\n },\n ref\n ) => {\n const { isDarkMode, toggle } = useDarkMode();\n\n return (\n <button\n type=\"button\"\n ref={ref}\n aria-label={ariaLabel}\n aria-pressed={isDarkMode}\n className={cn(switchVariants({ variant, size, iconStyle, className }))}\n onClick={toggle}\n {...props}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n {isDarkMode ? (\n <Moon\n className=\"w-5 h-5\"\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\n aria-hidden=\"true\"\n />\n ) : (\n <Sun\n className=\"w-5 h-5\"\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\n aria-hidden=\"true\"\n />\n )}\n </button>\n );\n }\n);\n\nNightModeSwitch.displayName = \"NightModeSwitch\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,oJAAoJ,EACpJ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iHAAiH;AAC1H,YAAA,SAAS,EAAE,yHAAyH;AACpI,YAAA,KAAK,EAAE,sGAAsG;AAC9G,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA;AACF,CAAA,CACF;AAQM,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CACE,EACE,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,kBAAkB,EAC9B,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAE5C,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,EAAA,YAAA,EACI,SAAS,EAAA,cAAA,EACP,UAAU,EACxB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EACtE,OAAO,EAAE,MAAM,EAAA,GACX,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,SAAS,EAAA,CAAQ,EAC3C,UAAU,IACTA,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,KAEFA,GAAA,CAAC,GAAG,EAAA,EACF,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,CACH,CAAA,EAAA,CACM;AAEb,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,iBAAiB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditModal.js","sources":["../../../src/components/ProfileManagement/EditModal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal } from \"../Modal/Modal\";\r\nimport { Button } from \"../Button\";\r\nimport { Input } from \"../Input\";\r\nimport { Textarea } from \"../Textarea\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport type EditModalField =\r\n | {\r\n type: \"text\" | \"email\" | \"tel\" | \"url\" | \"password\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n autoFocus?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\r\n }\r\n | {\r\n type: \"textarea\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n rows?: number;\r\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\r\n }\r\n | {\r\n type: \"select\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n options: { label: string; value: string }[];\r\n placeholder?: string;\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\r\n }\r\n | {\r\n type: \"checkbox\";\r\n label: string;\r\n name: string;\r\n checked?: boolean;\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n }\r\n | {\r\n type: \"radio\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n options: { label: string; value: string }[];\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n }\r\n | {\r\n type: \"switch\";\r\n label: string;\r\n name: string;\r\n checked?: boolean;\r\n required?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n }\r\n | {\r\n type: \"custom\";\r\n name: string;\r\n render: () => React.ReactNode;\r\n };\r\n\r\nexport interface EditModalProps {\r\n open: boolean;\r\n title?: string;\r\n description?: string;\r\n fields: EditModalField[];\r\n onChange: (name: string, value: string) => void;\r\n onSave: () => void;\r\n onClose: () => void;\r\n saving?: boolean;\r\n saveLabel?: string;\r\n closeLabel?: string;\r\n className?: string;\r\n}\r\n\r\nexport const EditModal: React.FC<EditModalProps> = ({\r\n open,\r\n title,\r\n description,\r\n fields,\r\n onChange,\r\n onSave,\r\n onClose,\r\n saving,\r\n saveLabel = \"Save Changes\",\r\n closeLabel = \"Close\",\r\n className,\r\n}) => (\r\n <Modal open={open} onOpenChange={() => onClose()}>\r\n <div className={cn(\"max-w-2xl rounded-2xl p-0 p-8 mx-auto bg-white\", className)}>\r\n {title && <h2 className=\"text-2xl font-bold mb-1 text-gray-900\">{title}</h2>}\r\n {description && <p className=\"text-gray-500 mb-6\">{description}</p>}\r\n <form\r\n className=\"space-y-6\"\r\n onSubmit={e => {\r\n e.preventDefault();\r\n onSave();\r\n }}\r\n >\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {fields.map((field, idx) => {\r\n if (field.type === \"custom\") {\r\n return <div key={field.name}>{field.render()}</div>;\r\n }\r\n // Title above every input/textarea/select/etc.\r\n const title = (\r\n <div key={field.name + \"-title\"} className=\"mb-1 font-medium text-gray-700\">\r\n {field.label}\r\n </div>\r\n );\r\n if (field.type === \"textarea\") {\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Textarea\r\n name={field.name}\r\n value={field.value}\r\n placeholder={field.placeholder}\r\n rows={field.rows || 3}\r\n required={field.required}\r\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"select\") {\r\n // Lazy import to avoid breaking if not present\r\n const { Select } = require(\"../Select/Select\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Select\r\n name={field.name}\r\n value={field.value}\r\n options={field.options}\r\n placeholder={field.placeholder}\r\n required={field.required}\r\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"checkbox\") {\r\n const { Checkbox } = require(\"../Checkbox/Checkbox\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Checkbox\r\n name={field.name}\r\n checked={field.checked}\r\n required={field.required}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.checked ? \"true\" : \"false\")}\r\n className=\"w-5 h-5\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"radio\") {\r\n const { RadioGroup } = require(\"../Radio/Radio\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <RadioGroup\r\n name={field.name}\r\n value={field.value}\r\n options={field.options}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"switch\") {\r\n const { Switch } = require(\"../Switch/Switch\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Switch\r\n name={field.name}\r\n checked={field.checked}\r\n onCheckedChange={(checked: boolean) => field.onChange ? field.onChange(checked) : onChange(field.name, checked ? \"true\" : \"false\")}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n // Default: Input\r\n if (\r\n field.type === \"text\" ||\r\n field.type === \"email\" ||\r\n field.type === \"tel\" ||\r\n field.type === \"url\" ||\r\n field.type === \"password\"\r\n ) {\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Input\r\n type={field.type}\r\n name={field.name}\r\n value={field.value}\r\n placeholder={field.placeholder}\r\n required={field.required}\r\n autoFocus={field.autoFocus}\r\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n {...field.inputProps}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n return null;\r\n })}\r\n </div>\r\n <div className=\"flex justify-end space-x-2 mt-8\">\r\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\r\n {closeLabel}\r\n </Button>\r\n <Button type=\"submit\" variant=\"primary\" disabled={saving}>\r\n {saveLabel}\r\n </Button>\r\n </div>\r\n </form>\r\n </div>\r\n </Modal>\r\n);\r\n\r\nEditModal.displayName = \"EditModal\";"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"EditModal.js","sources":["../../../src/components/ProfileManagement/EditModal.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Modal } from \"../Modal/Modal\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Textarea } from \"../Textarea\";\nimport { cn } from \"../../utils/cn\";\n\nexport type EditModalField =\n | {\n type: \"text\" | \"email\" | \"tel\" | \"url\" | \"password\";\n label: string;\n name: string;\n value?: string;\n placeholder?: string;\n required?: boolean;\n autoFocus?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n }\n | {\n type: \"textarea\";\n label: string;\n name: string;\n value?: string;\n placeholder?: string;\n required?: boolean;\n rows?: number;\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n }\n | {\n type: \"select\";\n label: string;\n name: string;\n value?: string;\n options: { label: string; value: string }[];\n placeholder?: string;\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n }\n | {\n type: \"checkbox\";\n label: string;\n name: string;\n checked?: boolean;\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n }\n | {\n type: \"radio\";\n label: string;\n name: string;\n value?: string;\n options: { label: string; value: string }[];\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n }\n | {\n type: \"switch\";\n label: string;\n name: string;\n checked?: boolean;\n required?: boolean;\n onChange?: (checked: boolean) => void;\n }\n | {\n type: \"custom\";\n name: string;\n render: () => React.ReactNode;\n };\n\nexport interface EditModalProps {\n open: boolean;\n title?: string;\n description?: string;\n fields: EditModalField[];\n onChange: (name: string, value: string) => void;\n onSave: () => void;\n onClose: () => void;\n saving?: boolean;\n saveLabel?: string;\n closeLabel?: string;\n className?: string;\n}\n\nexport const EditModal: React.FC<EditModalProps> = ({\n open,\n title,\n description,\n fields,\n onChange,\n onSave,\n onClose,\n saving,\n saveLabel = \"Save Changes\",\n closeLabel = \"Close\",\n className,\n}) => (\n <Modal open={open} onOpenChange={() => onClose()}>\n <div className={cn(\"max-w-2xl rounded-2xl p-0 p-8 mx-auto bg-white\", className)}>\n {title && <h2 className=\"text-2xl font-bold mb-1 text-gray-900\">{title}</h2>}\n {description && <p className=\"text-gray-500 mb-6\">{description}</p>}\n <form\n className=\"space-y-6\"\n onSubmit={e => {\n e.preventDefault();\n onSave();\n }}\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {fields.map((field, idx) => {\n if (field.type === \"custom\") {\n return <div key={field.name}>{field.render()}</div>;\n }\n // Title above every input/textarea/select/etc.\n const title = (\n <div key={field.name + \"-title\"} className=\"mb-1 font-medium text-gray-700\">\n {field.label}\n </div>\n );\n if (field.type === \"textarea\") {\n return (\n <React.Fragment key={field.name}>\n {title}\n <Textarea\n name={field.name}\n value={field.value}\n placeholder={field.placeholder}\n rows={field.rows || 3}\n required={field.required}\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"select\") {\n // Lazy import to avoid breaking if not present\n const { Select } = require(\"../Select/Select\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Select\n name={field.name}\n value={field.value}\n options={field.options}\n placeholder={field.placeholder}\n required={field.required}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"checkbox\") {\n const { Checkbox } = require(\"../Checkbox/Checkbox\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Checkbox\n name={field.name}\n checked={field.checked}\n required={field.required}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.checked ? \"true\" : \"false\")}\n className=\"w-5 h-5\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"radio\") {\n const { RadioGroup } = require(\"../Radio/Radio\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <RadioGroup\n name={field.name}\n value={field.value}\n options={field.options}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n />\n </React.Fragment>\n );\n }\n if (field.type === \"switch\") {\n const { Switch } = require(\"../Switch/Switch\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Switch\n name={field.name}\n checked={field.checked}\n onCheckedChange={(checked: boolean) => field.onChange ? field.onChange(checked) : onChange(field.name, checked ? \"true\" : \"false\")}\n />\n </React.Fragment>\n );\n }\n // Default: Input\n if (\n field.type === \"text\" ||\n field.type === \"email\" ||\n field.type === \"tel\" ||\n field.type === \"url\" ||\n field.type === \"password\"\n ) {\n return (\n <React.Fragment key={field.name}>\n {title}\n <Input\n type={field.type}\n name={field.name}\n value={field.value}\n placeholder={field.placeholder}\n required={field.required}\n autoFocus={field.autoFocus}\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n {...field.inputProps}\n />\n </React.Fragment>\n );\n }\n return null;\n })}\n </div>\n <div className=\"flex justify-end space-x-2 mt-8\">\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\n {closeLabel}\n </Button>\n <Button type=\"submit\" variant=\"primary\" disabled={saving}>\n {saveLabel}\n </Button>\n </div>\n </form>\n </div>\n </Modal>\n);\n\nEditModal.displayName = \"EditModal\";"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;AAoFO,MAAM,SAAS,GAA6B,CAAC,EAClD,IAAI,EACJ,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,GAAG,cAAc,EAC1B,UAAU,GAAG,OAAO,EACpB,SAAS,GACV,MACCA,IAAC,KAAK,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,OAAO,EAAE,YAC9CC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC5E,KAAK,IAAID,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAE,KAAK,EAAA,CAAM,EAC3E,WAAW,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,YAAE,WAAW,EAAA,CAAK,EACnEC,IAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAC,WAAW,EACrB,QAAQ,EAAE,CAAC,IAAG;oBACZ,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,MAAM,EAAE;AACV,gBAAA,CAAC,EAAA,QAAA,EAAA,CAEDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACnD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;AACzB,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gCAC3B,OAAOA,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAuB,KAAK,CAAC,MAAM,EAAE,IAA3B,KAAK,CAAC,IAAI,CAAwB;4BACrD;;AAEA,4BAAA,MAAM,KAAK,IACTA,aAAiC,SAAS,EAAC,gCAAgC,EAAA,QAAA,EACxE,KAAK,CAAC,KAAK,EAAA,EADJ,KAAK,CAAC,IAAI,GAAG,QAAQ,CAEzB,CACP;AACD,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7B,gCAAA,QACEC,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,KAAK,EACND,GAAA,CAAC,QAAQ,EAAA,EACP,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxF,SAAS,EAAC,QAAQ,GAClB,CAAA,EAAA,EAViB,KAAK,CAAC,IAAI,CAWd;4BAErB;AACA,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;;gCAE3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;AAC9C,gCAAA,QACEC,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,KAAK,EACND,GAAA,CAAC,MAAM,EAAA,EACL,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,CAAC,CAAuC,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChI,SAAS,EAAC,QAAQ,GAClB,CAAA,EAAA,EAViB,KAAK,CAAC,IAAI,CAWd;4BAErB;AACA,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;gCAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;AACpD,gCAAA,QACEC,IAAA,CAAC,KAAK,CAAC,QAAQ,eACZ,KAAK,EACND,GAAA,CAAC,QAAQ,IACP,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,CAAC,CAAsC,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EACpJ,SAAS,EAAC,SAAS,GACnB,CAAA,EAAA,EARiB,KAAK,CAAC,IAAI,CASd;4BAErB;AACA,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gCAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;AAChD,gCAAA,QACEC,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,KAAK,EACND,GAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,QAAQ,EAAE,CAAC,CAAsC,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CAC/H,KAPiB,KAAK,CAAC,IAAI,CAQd;4BAErB;AACA,4BAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gCAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;AAC9C,gCAAA,QACEC,IAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,KAAK,EACND,GAAA,CAAC,MAAM,EAAA,EACL,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,eAAe,EAAE,CAAC,OAAgB,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EAAA,CAClI,CAAA,EAAA,EANiB,KAAK,CAAC,IAAI,CAOd;4BAErB;;AAEA,4BAAA,IACE,KAAK,CAAC,IAAI,KAAK,MAAM;gCACrB,KAAK,CAAC,IAAI,KAAK,OAAO;gCACtB,KAAK,CAAC,IAAI,KAAK,KAAK;gCACpB,KAAK,CAAC,IAAI,KAAK,KAAK;AACpB,gCAAA,KAAK,CAAC,IAAI,KAAK,UAAU,EACzB;gCACA,QACEC,KAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,KAAK,EACND,GAAA,CAAC,KAAK,IACJ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxF,SAAS,EAAC,QAAQ,KACd,KAAK,CAAC,UAAU,EAAA,CACpB,CAAA,EAAA,EAZiB,KAAK,CAAC,IAAI,CAad;4BAErB;AACA,4BAAA,OAAO,IAAI;wBACb,CAAC,CAAC,GACE,EACNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,CAC9CD,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,OAAO,EAAA,QAAA,EACvD,UAAU,GACJ,EACTA,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,MAAM,YACrD,SAAS,EAAA,CACH,IACL,CAAA,EAAA,CACD,CAAA,EAAA,CACH,EAAA,CACA;AAGV,SAAS,CAAC,WAAW,GAAG,WAAW;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileCard.js","sources":["../../../src/components/ProfileManagement/ProfileCard.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Card } from \"../Card\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport interface ProfileCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Optional section title/header */\r\n header?: React.ReactNode;\r\n /** Main content of the card (fields, avatar, actions, etc.) */\r\n children: React.ReactNode;\r\n /** Optional footer (actions, buttons, etc.) */\r\n footer?: React.ReactNode;\r\n /** Card className override */\r\n className?: string;\r\n /** Card style override */\r\n style?: React.CSSProperties;\r\n}\r\n\r\n/**\r\n * ProfileCard\r\n * - Fully reusable, dynamic card for profile management UIs.\r\n * - Consumer controls all content via children/render prop.\r\n * - Can be used for any section (profile, info, address, custom).\r\n * - Theme-agnostic, accessible, and fully typed.\r\n */\r\nexport const ProfileCard: React.FC<ProfileCardProps> = ({\r\n header,\r\n children,\r\n footer,\r\n className,\r\n style,\r\n ...rest\r\n}) => (\r\n <Card\r\n className={cn(\r\n \"flex flex-col gap-4 p-6 rounded-xl bg-white shadow-sm border border-gray-100 mb-6\",\r\n className\r\n )}\r\n style={style}\r\n {...rest}\r\n >\r\n {header && (\r\n <div className=\"flex items-center justify-between mb-2\">\r\n {header}\r\n </div>\r\n )}\r\n <div className=\"flex-1\">{children}</div>\r\n {footer && (\r\n <div className=\"mt-4\">{footer}</div>\r\n )}\r\n </Card>\r\n);\r\n\r\nProfileCard.displayName = \"ProfileCard\";"],"names":["_jsxs","_jsx"],"mappings":";;;;AAiBA;;;;;;AAMG;AACI,MAAM,WAAW,GAA+B,CAAC,EACtD,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,MACCA,IAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,SAAS,CACV,EACD,KAAK,EAAE,KAAK,EAAA,GACR,IAAI,EAAA,QAAA,EAAA,CAEP,MAAM,KACLC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,YACpD,MAAM,EAAA,CACH,CACP,EACDA,aAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAO,EACvC,MAAM,KACLA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,YAAE,MAAM,EAAA,CAAO,CACrC,CAAA,EAAA,CACI;AAGT,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
1
+ {"version":3,"file":"ProfileCard.js","sources":["../../../src/components/ProfileManagement/ProfileCard.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Card } from \"../Card\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ProfileCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Optional section title/header */\n header?: React.ReactNode;\n /** Main content of the card (fields, avatar, actions, etc.) */\n children: React.ReactNode;\n /** Optional footer (actions, buttons, etc.) */\n footer?: React.ReactNode;\n /** Card className override */\n className?: string;\n /** Card style override */\n style?: React.CSSProperties;\n}\n\n/**\n * ProfileCard\n * - Fully reusable, dynamic card for profile management UIs.\n * - Consumer controls all content via children/render prop.\n * - Can be used for any section (profile, info, address, custom).\n * - Theme-agnostic, accessible, and fully typed.\n */\nexport const ProfileCard: React.FC<ProfileCardProps> = ({\n header,\n children,\n footer,\n className,\n style,\n ...rest\n}) => (\n <Card\n className={cn(\n \"flex flex-col gap-4 p-6 rounded-xl bg-white shadow-sm border border-gray-100 mb-6\",\n className\n )}\n style={style}\n {...rest}\n >\n {header && (\n <div className=\"flex items-center justify-between mb-2\">\n {header}\n </div>\n )}\n <div className=\"flex-1\">{children}</div>\n {footer && (\n <div className=\"mt-4\">{footer}</div>\n )}\n </Card>\n);\n\nProfileCard.displayName = \"ProfileCard\";"],"names":["_jsxs","_jsx"],"mappings":";;;;AAiBA;;;;;;AAMG;AACI,MAAM,WAAW,GAA+B,CAAC,EACtD,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,MACCA,IAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,SAAS,CACV,EACD,KAAK,EAAE,KAAK,EAAA,GACR,IAAI,EAAA,QAAA,EAAA,CAEP,MAAM,KACLC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,YACpD,MAAM,EAAA,CACH,CACP,EACDA,aAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAO,EACvC,MAAM,KACLA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,YAAE,MAAM,EAAA,CAAO,CACrC,CAAA,EAAA,CACI;AAGT,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sources":["../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst radioVariants = cva(\r\n \"peer h-4 w-4 shrink-0 rounded-full border border-gray-300 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-3 w-3\",\r\n md: \"h-4 w-4\",\r\n lg: \"h-5 w-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport interface RadioOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n name: string;\r\n value?: string;\r\n options: RadioOption[];\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n disabled?: boolean;\r\n}\r\n\r\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\r\n name,\r\n value,\r\n options,\r\n onChange,\r\n size = \"md\",\r\n disabled,\r\n className,\r\n ...props\r\n}) => (\r\n <div className={cn(\"flex flex-col gap-2\", className)} {...props}>\r\n {options.map(opt => (\r\n <label key={opt.value} className=\"inline-flex items-center gap-2 cursor-pointer\">\r\n <input\r\n type=\"radio\"\r\n name={name}\r\n value={opt.value}\r\n checked={value === opt.value}\r\n onChange={onChange}\r\n disabled={disabled}\r\n className={cn(radioVariants({ size }), \"appearance-none\")}\r\n data-state={value === opt.value ? \"checked\" : \"unchecked\"}\r\n />\r\n <span className=\"text-sm\">{opt.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n);\r\n\r\nRadioGroup.displayName = \"RadioGroup\";"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIA,MAAM,aAAa,GAAG,GAAG,CACvB,oTAAoT,EACpT;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA,CACF;AAgBM,MAAM,UAAU,GAA8B,CAAC,EACpD,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,QAAA,EAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,KACdC,IAAA,CAAA,OAAA,EAAA,EAAuB,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAC9ED,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,OAAO,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,EAAA,YAAA,EAC7C,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,WAAW,EAAA,CACzD,EACFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,GAAG,CAAC,KAAK,GAAQ,CAAA,EAAA,EAXlC,GAAG,CAAC,KAAK,CAYb,CACT,CAAC,EAAA,CACE;AAGR,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
1
+ {"version":3,"file":"Radio.js","sources":["../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst radioVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-full border border-gray-300 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface RadioOption {\n label: string;\n value: string;\n}\n\nexport interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n value?: string;\n options: RadioOption[];\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n options,\n onChange,\n size = \"md\",\n disabled,\n className,\n ...props\n}) => (\n <div className={cn(\"flex flex-col gap-2\", className)} {...props}>\n {options.map(opt => (\n <label key={opt.value} className=\"inline-flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={name}\n value={opt.value}\n checked={value === opt.value}\n onChange={onChange}\n disabled={disabled}\n className={cn(radioVariants({ size }), \"appearance-none\")}\n data-state={value === opt.value ? \"checked\" : \"unchecked\"}\n />\n <span className=\"text-sm\">{opt.label}</span>\n </label>\n ))}\n </div>\n);\n\nRadioGroup.displayName = \"RadioGroup\";"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIA,MAAM,aAAa,GAAG,GAAG,CACvB,oTAAoT,EACpT;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA,CACF;AAgBM,MAAM,UAAU,GAA8B,CAAC,EACpD,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,QAAA,EAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,KACdC,IAAA,CAAA,OAAA,EAAA,EAAuB,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAC9ED,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,OAAO,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,EAAA,YAAA,EAC7C,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,WAAW,EAAA,CACzD,EACFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,GAAG,CAAC,KAAK,GAAQ,CAAA,EAAA,EAXlC,GAAG,CAAC,KAAK,CAYb,CACT,CAAC,EAAA,CACE;AAGR,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst selectVariants = cva(\r\n \"block w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-gray-300\",\r\n error: \"border-danger-500 focus-visible:ring-danger-500\",\r\n success: \"border-success-500 focus-visible:ring-success-500\",\r\n },\r\n selectSize: {\r\n sm: \"h-8 px-2 text-xs\",\r\n md: \"h-10 px-3\",\r\n lg: \"h-12 px-4 text-base\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n selectSize: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface SelectProps\r\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\">,\r\n VariantProps<typeof selectVariants> {\r\n options: SelectOption[];\r\n placeholder?: string;\r\n}\r\n\r\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n ({ className, variant, selectSize, options, placeholder, ...props }, ref) => (\r\n <select\r\n className={cn(selectVariants({ variant, selectSize, className }))}\r\n ref={ref}\r\n {...props}\r\n >\r\n {placeholder && (\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n )}\r\n {options.map(opt => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n )\r\n);\r\n\r\nSelect.displayName = \"Select\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,wOAAwO,EACxO;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,iDAAiD;AACxD,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA;AACF,CAAA,CACF;MAcY,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MACtEA,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,EACjE,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,aAER,WAAW,KACVC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAA,IAAA,EAAC,MAAM,kBAC7B,WAAW,EAAA,CACL,CACV,EACA,OAAO,CAAC,GAAG,CAAC,GAAG,KACdA,GAAA,CAAA,QAAA,EAAA,EAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,EAAA,QAAA,EACrC,GAAG,CAAC,KAAK,EAAA,EADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,CAAA,EAAA,CACK,CACV;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst selectVariants = cva(\n \"block w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-gray-300\",\n error: \"border-danger-500 focus-visible:ring-danger-500\",\n success: \"border-success-500 focus-visible:ring-success-500\",\n },\n selectSize: {\n sm: \"h-8 px-2 text-xs\",\n md: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n selectSize: \"md\",\n },\n }\n);\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\">,\n VariantProps<typeof selectVariants> {\n options: SelectOption[];\n placeholder?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, variant, selectSize, options, placeholder, ...props }, ref) => (\n <select\n className={cn(selectVariants({ variant, selectSize, className }))}\n ref={ref}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options.map(opt => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n )\n);\n\nSelect.displayName = \"Select\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,wOAAwO,EACxO;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,iDAAiD;AACxD,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA;AACF,CAAA,CACF;MAcY,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MACtEA,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,EACjE,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,aAER,WAAW,KACVC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAA,IAAA,EAAC,MAAM,kBAC7B,WAAW,EAAA,CACL,CACV,EACA,OAAO,CAAC,GAAG,CAAC,GAAG,KACdA,GAAA,CAAA,QAAA,EAAA,EAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,EAAA,QAAA,EACrC,GAAG,CAAC,KAAK,EAAA,EADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,CAAA,EAAA,CACK,CACV;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogoutButton.js","sources":["../../../src/components/Sidebar/LogoutButton.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { LogOut } from \"lucide-react\";\r\nimport { Button } from \"../Button\";\r\nimport { useAuth } from \"../../contexts/AuthContext\";\r\n\r\n/**\r\n * LogoutButton\r\n * - Dual API: context-aware (uses useAuth) and stateless (accepts onLogout prop).\r\n * - If onLogout prop is provided, uses it; otherwise, falls back to useAuth.\r\n * - Theme-agnostic, reusable.\r\n */\r\nexport interface LogoutButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onLogout?: () => void;\r\n}\r\n\r\nexport const LogoutButton = React.forwardRef<HTMLButtonElement, LogoutButtonProps>(\r\n ({ className, onLogout, ...props }, ref) => {\r\n // Only call useAuth if onLogout prop is not provided\r\n let contextLogout: (() => void) | undefined;\r\n if (!onLogout) {\r\n try {\r\n const context = useAuth();\r\n if (context.logout) {\r\n contextLogout = context.logout;\r\n }\r\n } catch {\r\n // If context is missing, contextLogout remains undefined\r\n }\r\n }\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (props.onClick) props.onClick(e);\r\n if (onLogout) {\r\n onLogout();\r\n } else if (contextLogout) {\r\n contextLogout();\r\n }\r\n };\r\n return (\r\n <Button\r\n ref={ref}\r\n variant=\"danger\"\r\n size=\"sm\"\r\n className={className}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <LogOut className=\"h-3 w-3 mr-1\" />\r\n Logout\r\n </Button>\r\n );\r\n }\r\n);\r\n\r\nLogoutButton.displayName = \"LogoutButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;AAEzC,IAAA,IAAI,aAAuC;IAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,aAAa,GAAG,OAAO,CAAC,MAAM;YAChC;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;QAC7D,IAAI,KAAK,CAAC,OAAO;AAAE,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE;QACZ;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AACD,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EAAA,GAChB,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,QAAA,CAAA,EAAA,CAE5B;AAEb,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
1
+ {"version":3,"file":"LogoutButton.js","sources":["../../../src/components/Sidebar/LogoutButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { LogOut } from \"lucide-react\";\nimport { Button } from \"../Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\n/**\n * LogoutButton\n * - Dual API: context-aware (uses useAuth) and stateless (accepts onLogout prop).\n * - If onLogout prop is provided, uses it; otherwise, falls back to useAuth.\n * - Theme-agnostic, reusable.\n */\nexport interface LogoutButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n onLogout?: () => void;\n}\n\nexport const LogoutButton = React.forwardRef<HTMLButtonElement, LogoutButtonProps>(\n ({ className, onLogout, ...props }, ref) => {\n // Only call useAuth if onLogout prop is not provided\n let contextLogout: (() => void) | undefined;\n if (!onLogout) {\n try {\n const context = useAuth();\n if (context.logout) {\n contextLogout = context.logout;\n }\n } catch {\n // If context is missing, contextLogout remains undefined\n }\n }\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) props.onClick(e);\n if (onLogout) {\n onLogout();\n } else if (contextLogout) {\n contextLogout();\n }\n };\n return (\n <Button\n ref={ref}\n variant=\"danger\"\n size=\"sm\"\n className={className}\n onClick={handleClick}\n {...props}\n >\n <LogOut className=\"h-3 w-3 mr-1\" />\n Logout\n </Button>\n );\n }\n);\n\nLogoutButton.displayName = \"LogoutButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;AAEzC,IAAA,IAAI,aAAuC;IAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,aAAa,GAAG,OAAO,CAAC,MAAM;YAChC;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;QAC7D,IAAI,KAAK,CAAC,OAAO;AAAE,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE;QACZ;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AACD,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EAAA,GAChB,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,QAAA,CAAA,EAAA,CAE5B;AAEb,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileButton.js","sources":["../../../src/components/Sidebar/ProfileButton.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { User } from \"lucide-react\";\r\nimport { Button } from \"../Button\";\r\nimport { useAuth } from \"../../contexts/AuthContext\";\r\n\r\n/**\r\n * ProfileButton\r\n * - Dual API: context-aware (uses useAuth) and stateless (accepts user/onClick props).\r\n * - If user prop is provided, uses it; otherwise, falls back to useAuth.\r\n * - Theme-agnostic, reusable.\r\n */\r\nexport interface ProfileButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n user?: { name?: string; email?: string };\r\n}\r\n\r\nexport const ProfileButton = React.forwardRef<HTMLButtonElement, ProfileButtonProps>(\r\n ({ className, user, ...props }, ref) => {\r\n // Only call useAuth if user prop is not provided\r\n let displayUser = user;\r\n if (!displayUser) {\r\n try {\r\n const context = useAuth();\r\n if (context.user) {\r\n displayUser = context.user;\r\n }\r\n } catch {\r\n // If context is missing, displayUser remains undefined\r\n }\r\n }\r\n return (\r\n <Button\r\n ref={ref}\r\n variant=\"secondary\"\r\n size=\"sm\"\r\n className={className}\r\n {...props}\r\n >\r\n <User className=\"h-3 w-3 mr-1\" />\r\n Profile\r\n </Button>\r\n );\r\n }\r\n);\r\n\r\nProfileButton.displayName = \"ProfileButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,aAAa,GAAG,KAAK,CAAC,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;IAErC,IAAI,WAAW,GAAG,IAAI;IACtB,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,gBAAA,WAAW,GAAG,OAAO,CAAC,IAAI;YAC5B;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EAAA,GAChB,KAAK,aAETC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE1B;AAEb,CAAC;AAGH,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
1
+ {"version":3,"file":"ProfileButton.js","sources":["../../../src/components/Sidebar/ProfileButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { User } from \"lucide-react\";\nimport { Button } from \"../Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\n/**\n * ProfileButton\n * - Dual API: context-aware (uses useAuth) and stateless (accepts user/onClick props).\n * - If user prop is provided, uses it; otherwise, falls back to useAuth.\n * - Theme-agnostic, reusable.\n */\nexport interface ProfileButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n user?: { name?: string; email?: string };\n}\n\nexport const ProfileButton = React.forwardRef<HTMLButtonElement, ProfileButtonProps>(\n ({ className, user, ...props }, ref) => {\n // Only call useAuth if user prop is not provided\n let displayUser = user;\n if (!displayUser) {\n try {\n const context = useAuth();\n if (context.user) {\n displayUser = context.user;\n }\n } catch {\n // If context is missing, displayUser remains undefined\n }\n }\n return (\n <Button\n ref={ref}\n variant=\"secondary\"\n size=\"sm\"\n className={className}\n {...props}\n >\n <User className=\"h-3 w-3 mr-1\" />\n Profile\n </Button>\n );\n }\n);\n\nProfileButton.displayName = \"ProfileButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,aAAa,GAAG,KAAK,CAAC,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;IAErC,IAAI,WAAW,GAAG,IAAI;IACtB,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,gBAAA,WAAW,GAAG,OAAO,CAAC,IAAI;YAC5B;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EAAA,GAChB,KAAK,aAETC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE1B;AAEb,CAAC;AAGH,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.example.js","sources":["../../../src/components/Sidebar/Sidebar.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Sidebar } from \"./Sidebar\";\r\nimport type { MenuItem } from \"./Sidebar\";\r\n\r\nconst demoMenu: MenuItem[] = [\r\n {\r\n id: \"dashboard\",\r\n label: \"Dashboard\",\r\n icon: <span>D</span>,\r\n href: \"#\"\r\n },\r\n {\r\n id: \"settings\",\r\n label: \"Settings\",\r\n icon: <span>S</span>,\r\n href: \"#\"\r\n }\r\n];\r\n\r\nexport const SidebarExample: React.FC = () => (\r\n <Sidebar menuItems={demoMenu} />\r\n);"],"names":["_jsx"],"mappings":";;;AAIA,MAAM,QAAQ,GAAe;AAC3B,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP;CACF;AAEM,MAAM,cAAc,GAAa,OACtCA,GAAA,CAAC,OAAO,IAAC,SAAS,EAAE,QAAQ,EAAA,CAAI;;;;"}
1
+ {"version":3,"file":"Sidebar.example.js","sources":["../../../src/components/Sidebar/Sidebar.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { MenuItem } from \"./Sidebar\";\n\nconst demoMenu: MenuItem[] = [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n icon: <span>D</span>,\n href: \"#\"\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <span>S</span>,\n href: \"#\"\n }\n];\n\nexport const SidebarExample: React.FC = () => (\n <Sidebar menuItems={demoMenu} />\n);"],"names":["_jsx"],"mappings":";;;AAIA,MAAM,QAAQ,GAAe;AAC3B,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP;CACF;AAEM,MAAM,cAAc,GAAa,OACtCA,GAAA,CAAC,OAAO,IAAC,SAAS,EAAE,QAAQ,EAAA,CAAI;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { \r\n ChevronLeft, \r\n ChevronRight, \r\n ChevronDown, \r\n Home, \r\n BarChart3, \r\n Users, \r\n Settings, \r\n FileText, \r\n Calendar, \r\n Mail, \r\n Bell,\r\n LogOut,\r\n User\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\r\nimport { Badge } from \"../Badge\";\r\nimport { ProfileButton } from \"./ProfileButton\";\r\nimport { LogoutButton } from \"./LogoutButton\";\r\n\r\nconst sidebarVariants = cva(\r\n \"fixed left-0 top-0 z-40 h-screen bg-white border-r border-gray-200 transition-all duration-300 ease-in-out\",\r\n {\r\n variants: {\r\n collapsed: {\r\n false: \"w-72\",\r\n true: \"w-16\",\r\n },\r\n },\r\n defaultVariants: {\r\n collapsed: false,\r\n },\r\n }\r\n);\r\n\r\nconst menuItemVariants = cva(\r\n \"flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group\",\r\n {\r\n variants: {\r\n active: {\r\n true: \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\",\r\n false: \"text-gray-700 hover:bg-gray-50 hover:text-gray-900\",\r\n },\r\n collapsed: {\r\n true: \"justify-center px-2\",\r\n false: \"justify-start\",\r\n },\r\n },\r\n defaultVariants: {\r\n active: false,\r\n collapsed: false,\r\n },\r\n }\r\n);\r\n\r\ninterface MenuItem {\r\n id: string;\r\n label: string;\r\n icon: React.ReactNode;\r\n href?: string;\r\n badge?: string;\r\n children?: MenuItem[];\r\n}\r\n\r\nimport { SidebarHeader } from \"./SidebarHeader\";\r\n\r\nexport interface SidebarProfileSectionProps {\r\n avatarUrl?: string;\r\n name?: string;\r\n email?: string;\r\n avatarFallback?: string;\r\n collapsedAvatarSize?: \"sm\" | \"md\" | \"lg\";\r\n expandedAvatarSize?: \"sm\" | \"md\" | \"lg\";\r\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\ninterface SidebarProps extends VariantProps<typeof sidebarVariants> {\r\n className?: string;\r\n onToggle?: () => void;\r\n menuItems?: MenuItem[];\r\n activeItem?: string;\r\n onItemClick?: (itemId: string) => void;\r\n /** Sidebar header title (default: \"Beyond\") */\r\n title?: string;\r\n /** Sidebar header letter (default: \"B\") */\r\n titleLetter?: string;\r\n /** Optional className for SidebarHeader */\r\n headerClassName?: string;\r\n style?: React.CSSProperties;\r\n /** Props for ProfileButton (stateless usage) */\r\n profileButtonProps?: import(\"./ProfileButton\").ProfileButtonProps;\r\n /** Props for LogoutButton (stateless usage) */\r\n logoutButtonProps?: import(\"./LogoutButton\").LogoutButtonProps;\r\n /** Dynamic profile section props */\r\n profileSectionProps?: SidebarProfileSectionProps;\r\n}\r\n\r\nconst defaultMenuItems: MenuItem[] = [\r\n {\r\n id: \"dashboard\",\r\n label: \"Dashboard\",\r\n icon: <Home className=\"h-5 w-5\" />,\r\n href: \"/dashboard\",\r\n },\r\n {\r\n id: \"analytics\",\r\n label: \"Analytics\",\r\n icon: <BarChart3 className=\"h-5 w-5\" />,\r\n href: \"/analytics\",\r\n badge: \"New\",\r\n },\r\n {\r\n id: \"users\",\r\n label: \"Users\",\r\n icon: <Users className=\"h-5 w-5\" />,\r\n children: [\r\n { id: \"all-users\", label: \"All Users\", icon: <Users className=\"h-4 w-4\" /> },\r\n { id: \"user-roles\", label: \"User Roles\", icon: <Settings className=\"h-4 w-4\" /> },\r\n ],\r\n },\r\n {\r\n id: \"reports\",\r\n label: \"Reports\",\r\n icon: <FileText className=\"h-5 w-5\" />,\r\n href: \"/reports\",\r\n },\r\n {\r\n id: \"calendar\",\r\n label: \"Calendar\",\r\n icon: <Calendar className=\"h-5 w-5\" />,\r\n href: \"/calendar\",\r\n },\r\n {\r\n id: \"messages\",\r\n label: \"Messages\",\r\n icon: <Mail className=\"h-5 w-5\" />,\r\n href: \"/messages\",\r\n badge: \"3\",\r\n },\r\n {\r\n id: \"notifications\",\r\n label: \"Notifications\",\r\n icon: <Bell className=\"h-5 w-5\" />,\r\n href: \"/notifications\",\r\n },\r\n {\r\n id: \"settings\",\r\n label: \"Settings\",\r\n icon: <Settings className=\"h-5 w-5\" />,\r\n href: \"/settings\",\r\n },\r\n];\r\n\r\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\r\n ({\r\n className,\r\n collapsed = false,\r\n onToggle,\r\n menuItems = defaultMenuItems,\r\n activeItem = \"dashboard\",\r\n onItemClick,\r\n title = \"Beyond\",\r\n titleLetter = \"B\",\r\n headerClassName,\r\n profileButtonProps,\r\n logoutButtonProps,\r\n profileSectionProps,\r\n ...props\r\n }, ref) => {\r\n const [expandedItems, setExpandedItems] = React.useState<string[]>([]);\r\n\r\n const toggleExpanded = (itemId: string) => {\r\n setExpandedItems(prev => \r\n prev.includes(itemId) \r\n ? prev.filter(id => id !== itemId)\r\n : [...prev, itemId]\r\n );\r\n };\r\n\r\n const handleItemClick = (item: MenuItem) => {\r\n if (item.children) {\r\n toggleExpanded(item.id);\r\n } else {\r\n onItemClick?.(item.id);\r\n }\r\n };\r\n\r\n const renderMenuItem = (item: MenuItem, level = 0) => {\r\n const isActive = activeItem === item.id;\r\n const isExpanded = expandedItems.includes(item.id);\r\n const hasChildren = item.children && item.children.length > 0;\r\n\r\n return (\r\n <div key={item.id}>\r\n <button\r\n onClick={() => handleItemClick(item)}\r\n className={cn(\r\n menuItemVariants({ active: isActive, collapsed }),\r\n level > 0 && \"ml-4 pl-8\",\r\n \"relative\"\r\n )}\r\n >\r\n <div className=\"flex items-center min-w-0 flex-1\">\r\n <div className=\"flex-shrink-0\">\r\n {item.icon}\r\n </div>\r\n {!collapsed && (\r\n <>\r\n <span className=\"ml-3 truncate\">{item.label}</span>\r\n {item.badge && (\r\n <Badge variant=\"danger\" className=\"ml-auto text-xs\">\r\n {item.badge}\r\n </Badge>\r\n )}\r\n {hasChildren && (\r\n <ChevronDown \r\n className={cn(\r\n \"ml-auto h-4 w-4 transition-transform duration-200\",\r\n isExpanded && \"rotate-180\"\r\n )}\r\n />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </button>\r\n \r\n {hasChildren && !collapsed && isExpanded && (\r\n <div className=\"mt-1 space-y-1\">\r\n {item.children?.map(child => renderMenuItem(child, level + 1))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Profile section props with fallbacks\r\n const {\r\n avatarUrl = \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\",\r\n name = \"John Doe\",\r\n email = \"john@company.com\",\r\n avatarFallback = \"JD\",\r\n collapsedAvatarSize = \"sm\",\r\n expandedAvatarSize = \"sm\",\r\n onClick\r\n } = profileSectionProps || {};\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-col h-screen\",\r\n sidebarVariants({ collapsed }),\r\n className\r\n )}\r\n style={props.style}\r\n {...props}\r\n >\r\n {/* Sidebar Header */}\r\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\r\n {!collapsed && (\r\n <SidebarHeader\r\n title={title}\r\n letter={titleLetter}\r\n className={headerClassName}\r\n />\r\n )}\r\n <button\r\n onClick={onToggle}\r\n className=\"p-1.5 rounded-lg hover:bg-gray-100 transition-colors\"\r\n >\r\n {collapsed ? (\r\n <ChevronRight className=\"h-4 w-4 text-gray-600\" />\r\n ) : (\r\n <ChevronLeft className=\"h-4 w-4 text-gray-600\" />\r\n )}\r\n </button>\r\n </div>\r\n\r\n {/* Navigation Menu */}\r\n <nav className=\"flex-1 px-4 py-6 space-y-2 overflow-y-auto\">\r\n {menuItems.map(item => renderMenuItem(item))}\r\n </nav>\r\n\r\n {/* User Profile Section */}\r\n <div className=\"border-t border-gray-200 p-4\">\r\n {collapsed ? (\r\n <div className=\"flex justify-center\">\r\n <div\r\n className={cn(\r\n \"rounded-lg transition-colors\",\r\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\r\n )}\r\n tabIndex={onClick ? 0 : undefined}\r\n role={onClick ? \"button\" : undefined}\r\n aria-label={onClick ? \"View profile\" : undefined}\r\n onClick={onClick}\r\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\r\n >\r\n <Avatar size={collapsedAvatarSize}>\r\n <AvatarImage src={avatarUrl} />\r\n <AvatarFallback>{avatarFallback}</AvatarFallback>\r\n </Avatar>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n <div\r\n className={cn(\r\n \"flex items-center space-x-3 rounded-lg transition-colors\",\r\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\r\n )}\r\n tabIndex={onClick ? 0 : undefined}\r\n role={onClick ? \"button\" : undefined}\r\n aria-label={onClick ? \"View profile\" : undefined}\r\n onClick={onClick}\r\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\r\n >\r\n <Avatar size={expandedAvatarSize}>\r\n <AvatarImage src={avatarUrl} />\r\n <AvatarFallback>{avatarFallback}</AvatarFallback>\r\n </Avatar>\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium text-gray-900 truncate\">\r\n {name}\r\n </p>\r\n <p className=\"text-xs text-gray-500 truncate\">\r\n {email}\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"flex space-x-2\">\r\n {/* Reusable, theme-agnostic profile/logout buttons */}\r\n <ProfileButton className=\"flex-1\" {...profileButtonProps} />\r\n <LogoutButton className=\"flex-1\" {...logoutButtonProps} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nexport { Sidebar, sidebarVariants, type MenuItem };"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;AAuBA,MAAM,eAAe,GAAG,GAAG,CACzB,4GAA4G,EAC5G;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,MAAM;AACb,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;AAGH,MAAM,gBAAgB,GAAG,GAAG,CAC1B,uGAAuG,EACvG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,8DAA8D;AACpE,YAAA,KAAK,EAAE,oDAAoD;AAC5D,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,KAAK,EAAE,eAAe;AACvB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA,CACF;AA4CD,MAAM,gBAAgB,GAAe;AACnC,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AAClC,QAAA,IAAI,EAAE,YAAY;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACvC,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,KAAK,EAAE,KAAK;AACb,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,IAAI,EAAEA,GAAA,CAAC,KAAK,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACnC,QAAA,QAAQ,EAAE;AACR,YAAA,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EAAE;AAC5E,YAAA,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAEA,IAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EAAE;AAClF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAEA,GAAA,CAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACtC,QAAA,IAAI,EAAE,UAAU;AACjB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACtC,QAAA,IAAI,EAAE,WAAW;AAClB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AAClC,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,eAAe;AACnB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAEA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AAClC,QAAA,IAAI,EAAE,gBAAgB;AACvB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACtC,QAAA,IAAI,EAAE,WAAW;AAClB,KAAA;CACF;AAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EACC,SAAS,EACT,SAAS,GAAG,KAAK,EACjB,QAAQ,EACR,SAAS,GAAG,gBAAgB,EAC5B,UAAU,GAAG,WAAW,EACxB,WAAW,EACX,KAAK,GAAG,QAAQ,EAChB,WAAW,GAAG,GAAG,EACjB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,GAAG,KAAK,EACT,EAAE,GAAG,KAAI;AACR,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAW,EAAE,CAAC;AAEtE,IAAA,MAAM,cAAc,GAAG,CAAC,MAAc,KAAI;QACxC,gBAAgB,CAAC,IAAI,IACnB,IAAI,CAAC,QAAQ,CAAC,MAAM;AAClB,cAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM;cAC/B,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CACtB;AACH,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,IAAc,KAAI;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB;aAAO;AACL,YAAA,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;QACxB;AACF,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,IAAc,EAAE,KAAK,GAAG,CAAC,KAAI;AACnD,QAAA,MAAM,QAAQ,GAAG,UAAU,KAAK,IAAI,CAAC,EAAE;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAClD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAE7D,QAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,EACpC,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EACjD,KAAK,GAAG,CAAC,IAAI,WAAW,EACxB,UAAU,CACX,EAAA,QAAA,EAEDC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC/CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC3B,IAAI,CAAC,IAAI,EAAA,CACN,EACL,CAAC,SAAS,KACTC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEF,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,eAAe,EAAA,QAAA,EAAE,IAAI,CAAC,KAAK,EAAA,CAAQ,EAClD,IAAI,CAAC,KAAK,KACTA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,YAChD,IAAI,CAAC,KAAK,EAAA,CACL,CACT,EACA,WAAW,KACVA,IAAC,WAAW,EAAA,EACV,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,UAAU,IAAI,YAAY,CAC3B,EAAA,CACD,CACH,IACA,CACJ,CAAA,EAAA,CACG,EAAA,CACC,EAER,WAAW,IAAI,CAAC,SAAS,IAAI,UAAU,KACtCA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAC5B,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAA,CAC1D,CACP,KAtCO,IAAI,CAAC,EAAE,CAuCX;AAEV,IAAA,CAAC;;AAGD,IAAA,MAAM,EACJ,SAAS,GAAG,iGAAiG,EAC7G,IAAI,GAAG,UAAU,EACjB,KAAK,GAAG,kBAAkB,EAC1B,cAAc,GAAG,IAAI,EACrB,mBAAmB,GAAG,IAAI,EAC1B,kBAAkB,GAAG,IAAI,EACzB,OAAO,EACR,GAAG,mBAAmB,IAAI,EAAE;IAE7B,QACEC,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,wBAAwB,EACxB,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,EAC9B,SAAS,CACV,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAAA,GACd,KAAK,aAGTA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gEAAgE,EAAA,QAAA,EAAA,CAC5E,CAAC,SAAS,KACTD,IAAC,aAAa,EAAA,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,eAAe,EAAA,CAC1B,CACH,EACDA,GAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,sDAAsD,YAE/D,SAAS,IACRA,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,CAAG,KAElDA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,CAAG,CAClD,GACM,CAAA,EAAA,CACL,EAGNA,aAAK,SAAS,EAAC,4CAA4C,EAAA,QAAA,EACxD,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,EAAA,CACxC,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAC1C,SAAS,IACRA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAClCA,aACE,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,OAAO,IAAI,qHAAqH,CACjI,EACD,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EACjC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,gBACxB,OAAO,GAAG,cAAc,GAAG,SAAS,EAChD,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,KAAI,EAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;4BAAE,OAAO,CAAC,CAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAA,QAAA,EAEtGC,IAAA,CAAC,MAAM,IAAC,IAAI,EAAE,mBAAmB,EAAA,QAAA,EAAA,CAC/BD,GAAA,CAAC,WAAW,EAAA,EAAC,GAAG,EAAE,SAAS,EAAA,CAAI,EAC/BA,GAAA,CAAC,cAAc,cAAE,cAAc,EAAA,CAAkB,CAAA,EAAA,CAC1C,EAAA,CACL,EAAA,CACF,KAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,aACxBA,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,OAAO,IAAI,qHAAqH,CACjI,EACD,QAAQ,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,EACjC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,EAAA,YAAA,EACxB,OAAO,GAAG,cAAc,GAAG,SAAS,EAChD,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,KAAI,EAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;AAAE,gCAAA,OAAO,CAAC,CAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAA,QAAA,EAAA,CAEtGA,KAAC,MAAM,EAAA,EAAC,IAAI,EAAE,kBAAkB,aAC9BD,GAAA,CAAC,WAAW,EAAA,EAAC,GAAG,EAAE,SAAS,EAAA,CAAI,EAC/BA,GAAA,CAAC,cAAc,cAAE,cAAc,EAAA,CAAkB,IAC1C,EACTC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BD,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4CAA4C,EAAA,QAAA,EACtD,IAAI,EAAA,CACH,EACJA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAC1C,KAAK,EAAA,CACJ,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EACNC,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAE7BD,GAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAC,QAAQ,KAAK,kBAAkB,EAAA,CAAI,EAC5DA,GAAA,CAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,EAAA,GAAK,iBAAiB,GAAI,CAAA,EAAA,CACtD,CAAA,EAAA,CACF,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
1
+ {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { \n ChevronLeft, \n ChevronRight, \n ChevronDown, \n Home, \n BarChart3, \n Users, \n Settings, \n FileText, \n Calendar, \n Mail, \n Bell,\n LogOut,\n User\n} from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\nimport { ProfileButton } from \"./ProfileButton\";\nimport { LogoutButton } from \"./LogoutButton\";\n\nconst sidebarVariants = cva(\n \"fixed left-0 top-0 z-40 h-screen bg-white border-r border-gray-200 transition-all duration-300 ease-in-out\",\n {\n variants: {\n collapsed: {\n false: \"w-72\",\n true: \"w-16\",\n },\n },\n defaultVariants: {\n collapsed: false,\n },\n }\n);\n\nconst menuItemVariants = cva(\n \"flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group\",\n {\n variants: {\n active: {\n true: \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\",\n false: \"text-gray-700 hover:bg-gray-50 hover:text-gray-900\",\n },\n collapsed: {\n true: \"justify-center px-2\",\n false: \"justify-start\",\n },\n },\n defaultVariants: {\n active: false,\n collapsed: false,\n },\n }\n);\n\ninterface MenuItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n href?: string;\n badge?: string;\n children?: MenuItem[];\n}\n\nimport { SidebarHeader } from \"./SidebarHeader\";\n\nexport interface SidebarProfileSectionProps {\n avatarUrl?: string;\n name?: string;\n email?: string;\n avatarFallback?: string;\n collapsedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n expandedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\ninterface SidebarProps extends VariantProps<typeof sidebarVariants> {\n className?: string;\n onToggle?: () => void;\n menuItems?: MenuItem[];\n activeItem?: string;\n onItemClick?: (itemId: string) => void;\n /** Sidebar header title (default: \"Beyond\") */\n title?: string;\n /** Sidebar header letter (default: \"B\") */\n titleLetter?: string;\n /** Optional className for SidebarHeader */\n headerClassName?: string;\n style?: React.CSSProperties;\n /** Props for ProfileButton (stateless usage) */\n profileButtonProps?: import(\"./ProfileButton\").ProfileButtonProps;\n /** Props for LogoutButton (stateless usage) */\n logoutButtonProps?: import(\"./LogoutButton\").LogoutButtonProps;\n /** Dynamic profile section props */\n profileSectionProps?: SidebarProfileSectionProps;\n}\n\nconst defaultMenuItems: MenuItem[] = [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n icon: <Home className=\"h-5 w-5\" />,\n href: \"/dashboard\",\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n icon: <BarChart3 className=\"h-5 w-5\" />,\n href: \"/analytics\",\n badge: \"New\",\n },\n {\n id: \"users\",\n label: \"Users\",\n icon: <Users className=\"h-5 w-5\" />,\n children: [\n { id: \"all-users\", label: \"All Users\", icon: <Users className=\"h-4 w-4\" /> },\n { id: \"user-roles\", label: \"User Roles\", icon: <Settings className=\"h-4 w-4\" /> },\n ],\n },\n {\n id: \"reports\",\n label: \"Reports\",\n icon: <FileText className=\"h-5 w-5\" />,\n href: \"/reports\",\n },\n {\n id: \"calendar\",\n label: \"Calendar\",\n icon: <Calendar className=\"h-5 w-5\" />,\n href: \"/calendar\",\n },\n {\n id: \"messages\",\n label: \"Messages\",\n icon: <Mail className=\"h-5 w-5\" />,\n href: \"/messages\",\n badge: \"3\",\n },\n {\n id: \"notifications\",\n label: \"Notifications\",\n icon: <Bell className=\"h-5 w-5\" />,\n href: \"/notifications\",\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <Settings className=\"h-5 w-5\" />,\n href: \"/settings\",\n },\n];\n\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\n ({\n className,\n collapsed = false,\n onToggle,\n menuItems = defaultMenuItems,\n activeItem = \"dashboard\",\n onItemClick,\n title = \"Beyond\",\n titleLetter = \"B\",\n headerClassName,\n profileButtonProps,\n logoutButtonProps,\n profileSectionProps,\n ...props\n }, ref) => {\n const [expandedItems, setExpandedItems] = React.useState<string[]>([]);\n\n const toggleExpanded = (itemId: string) => {\n setExpandedItems(prev => \n prev.includes(itemId) \n ? prev.filter(id => id !== itemId)\n : [...prev, itemId]\n );\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.children) {\n toggleExpanded(item.id);\n } else {\n onItemClick?.(item.id);\n }\n };\n\n const renderMenuItem = (item: MenuItem, level = 0) => {\n const isActive = activeItem === item.id;\n const isExpanded = expandedItems.includes(item.id);\n const hasChildren = item.children && item.children.length > 0;\n\n return (\n <div key={item.id}>\n <button\n onClick={() => handleItemClick(item)}\n className={cn(\n menuItemVariants({ active: isActive, collapsed }),\n level > 0 && \"ml-4 pl-8\",\n \"relative\"\n )}\n >\n <div className=\"flex items-center min-w-0 flex-1\">\n <div className=\"flex-shrink-0\">\n {item.icon}\n </div>\n {!collapsed && (\n <>\n <span className=\"ml-3 truncate\">{item.label}</span>\n {item.badge && (\n <Badge variant=\"danger\" className=\"ml-auto text-xs\">\n {item.badge}\n </Badge>\n )}\n {hasChildren && (\n <ChevronDown \n className={cn(\n \"ml-auto h-4 w-4 transition-transform duration-200\",\n isExpanded && \"rotate-180\"\n )}\n />\n )}\n </>\n )}\n </div>\n </button>\n \n {hasChildren && !collapsed && isExpanded && (\n <div className=\"mt-1 space-y-1\">\n {item.children?.map(child => renderMenuItem(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n // Profile section props with fallbacks\n const {\n avatarUrl = \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\",\n name = \"John Doe\",\n email = \"john@company.com\",\n avatarFallback = \"JD\",\n collapsedAvatarSize = \"sm\",\n expandedAvatarSize = \"sm\",\n onClick\n } = profileSectionProps || {};\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col h-screen\",\n sidebarVariants({ collapsed }),\n className\n )}\n style={props.style}\n {...props}\n >\n {/* Sidebar Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n {!collapsed && (\n <SidebarHeader\n title={title}\n letter={titleLetter}\n className={headerClassName}\n />\n )}\n <button\n onClick={onToggle}\n className=\"p-1.5 rounded-lg hover:bg-gray-100 transition-colors\"\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4 text-gray-600\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4 text-gray-600\" />\n )}\n </button>\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"flex-1 px-4 py-6 space-y-2 overflow-y-auto\">\n {menuItems.map(item => renderMenuItem(item))}\n </nav>\n\n {/* User Profile Section */}\n <div className=\"border-t border-gray-200 p-4\">\n {collapsed ? (\n <div className=\"flex justify-center\">\n <div\n className={cn(\n \"rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={collapsedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n </div>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <div\n className={cn(\n \"flex items-center space-x-3 rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={expandedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 truncate\">\n {name}\n </p>\n <p className=\"text-xs text-gray-500 truncate\">\n {email}\n </p>\n </div>\n </div>\n <div className=\"flex space-x-2\">\n {/* Reusable, theme-agnostic profile/logout buttons */}\n <ProfileButton className=\"flex-1\" {...profileButtonProps} />\n <LogoutButton className=\"flex-1\" {...logoutButtonProps} />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nSidebar.displayName = \"Sidebar\";\n\nexport { Sidebar, sidebarVariants, type MenuItem };"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarHeader.js","sources":["../../../src/components/Sidebar/SidebarHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/**\r\n * SidebarHeader\r\n * - Reusable header for Sidebar and other layouts.\r\n * - Accepts dynamic title and letter for branding.\r\n * - Uses theme tokens (bg-primary-600, text-white, etc.) for theme-agnostic design.\r\n * - Allows className override for further customization.\r\n *\r\n * @example\r\n * <SidebarHeader title=\"Admin Panel\" letter=\"A\" />\r\n */\r\nexport interface SidebarHeaderProps {\r\n /** Main title text (default: \"Beyond\") */\r\n title?: string;\r\n /** Letter/initial in colored box (default: \"B\") */\r\n letter?: string;\r\n /** Optional className for root element */\r\n className?: string;\r\n}\r\n\r\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\r\n title = \"Beyond\",\r\n letter = \"B\",\r\n className,\r\n}) => (\r\n <div className={cn(\"flex items-center space-x-2\", className)}>\r\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\r\n <span className=\"text-white font-bold text-sm\">{letter}</span>\r\n </div>\r\n <span className=\"font-bold text-xl text-gray-900\">{title}</span>\r\n </div>\r\n);\r\n\r\nSidebarHeader.displayName = \"SidebarHeader\";"],"names":["_jsxs","_jsx"],"mappings":";;;AAsBO,MAAM,aAAa,GAAiC,CAAC,EAC1D,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,GAAG,EACZ,SAAS,GACV,MACCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC1DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAE,MAAM,EAAA,CAAQ,EAAA,CAC1D,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,CAAA,EAAA,CAC5D;AAGR,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
1
+ {"version":3,"file":"SidebarHeader.js","sources":["../../../src/components/Sidebar/SidebarHeader.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/**\n * SidebarHeader\n * - Reusable header for Sidebar and other layouts.\n * - Accepts dynamic title and letter for branding.\n * - Uses theme tokens (bg-primary-600, text-white, etc.) for theme-agnostic design.\n * - Allows className override for further customization.\n *\n * @example\n * <SidebarHeader title=\"Admin Panel\" letter=\"A\" />\n */\nexport interface SidebarHeaderProps {\n /** Main title text (default: \"Beyond\") */\n title?: string;\n /** Letter/initial in colored box (default: \"B\") */\n letter?: string;\n /** Optional className for root element */\n className?: string;\n}\n\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\n title = \"Beyond\",\n letter = \"B\",\n className,\n}) => (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <span className=\"text-white font-bold text-sm\">{letter}</span>\n </div>\n <span className=\"font-bold text-xl text-gray-900\">{title}</span>\n </div>\n);\n\nSidebarHeader.displayName = \"SidebarHeader\";"],"names":["_jsxs","_jsx"],"mappings":";;;AAsBO,MAAM,aAAa,GAAiC,CAAC,EAC1D,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,GAAG,EACZ,SAAS,GACV,MACCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC1DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAE,MAAM,EAAA,CAAQ,EAAA,CAC1D,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,CAAA,EAAA,CAC5D;AAGR,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.example.js","sources":["../../../src/components/Skeleton/Skeleton.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Skeleton } from \"./Skeleton\";\r\n\r\nexport const SkeletonExample: React.FC = () => (\r\n <div className=\"space-y-4 max-w-md\">\r\n <Skeleton className=\"h-8 w-1/2\" />\r\n <Skeleton className=\"h-4 w-3/4\" />\r\n <div className=\"flex gap-2\">\r\n <Skeleton className=\"h-8 w-8 rounded-full\" />\r\n <Skeleton className=\"h-8 w-32\" />\r\n </div>\r\n <Skeleton className=\"h-24 w-full\" />\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACzBC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC7CA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CAC7B,EACNA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAA,CAAG,CAAA,EAAA,CAChC;;;;"}
1
+ {"version":3,"file":"Skeleton.example.js","sources":["../../../src/components/Skeleton/Skeleton.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Skeleton } from \"./Skeleton\";\n\nexport const SkeletonExample: React.FC = () => (\n <div className=\"space-y-4 max-w-md\">\n <Skeleton className=\"h-8 w-1/2\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-8 w-8 rounded-full\" />\n <Skeleton className=\"h-8 w-32\" />\n </div>\n <Skeleton className=\"h-24 w-full\" />\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACzBC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC7CA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CAC7B,EACNA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAA,CAAG,CAAA,EAAA,CAChC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.example.js","sources":["../../../src/components/Spinner/Spinner.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Spinner } from \"./Spinner\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const SpinnerExample: React.FC = () => (\r\n <div className=\"space-y-4\">\r\n <Spinner />\r\n <div className=\"flex gap-2 items-center\">\r\n <Spinner /> <span>Loading data...</span>\r\n </div>\r\n <Button variant=\"primary\" disabled>\r\n <Spinner className=\"mr-2 h-4 w-4\" /> Processing\r\n </Button>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;MAIa,cAAc,GAAa,OACtCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,EACXD,cAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,OAAO,KAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA4B,IACpC,EACND,IAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,mBAChCC,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,aAAA,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL;;;;"}
1
+ {"version":3,"file":"Spinner.example.js","sources":["../../../src/components/Spinner/Spinner.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Spinner } from \"./Spinner\";\nimport { Button } from \"../Button\";\n\nexport const SpinnerExample: React.FC = () => (\n <div className=\"space-y-4\">\n <Spinner />\n <div className=\"flex gap-2 items-center\">\n <Spinner /> <span>Loading data...</span>\n </div>\n <Button variant=\"primary\" disabled>\n <Spinner className=\"mr-2 h-4 w-4\" /> Processing\n </Button>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;MAIa,cAAc,GAAa,OACtCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,EACXD,cAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,OAAO,KAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA4B,IACpC,EACND,IAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,mBAChCC,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,aAAA,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatsCard.example.js","sources":["../../../src/components/StatsCard/StatsCard.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { StatsCard } from \"./StatsCard\";\r\nimport { BarChart3 } from \"lucide-react\";\r\n\r\nexport const StatsCardExample: React.FC = () => (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <StatsCard\r\n title=\"Total Users\"\r\n value=\"2,543\"\r\n trend={{\r\n direction: \"up\",\r\n value: \"+12%\",\r\n label: \"from last month\"\r\n }}\r\n icon={<BarChart3 className=\"h-6 w-6 text-primary-600\" />}\r\n />\r\n <StatsCard\r\n variant=\"gradient\"\r\n color=\"success\"\r\n title=\"Revenue\"\r\n value=\"$45,231\"\r\n trend={{\r\n direction: \"up\",\r\n value: \"+8.2%\",\r\n label: \"from last month\"\r\n }}\r\n icon={<BarChart3 className=\"h-6 w-6\" />}\r\n />\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;AAIO,MAAM,gBAAgB,GAAa,OACxCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,aACpDC,GAAA,CAAC,SAAS,EAAA,EACR,KAAK,EAAC,aAAa,EACnB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,CAAG,EAAA,CACxD,EACFA,GAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACvC,CAAA,EAAA,CACE;;;;"}
1
+ {"version":3,"file":"StatsCard.example.js","sources":["../../../src/components/StatsCard/StatsCard.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { StatsCard } from \"./StatsCard\";\nimport { BarChart3 } from \"lucide-react\";\n\nexport const StatsCardExample: React.FC = () => (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <StatsCard\n title=\"Total Users\"\n value=\"2,543\"\n trend={{\n direction: \"up\",\n value: \"+12%\",\n label: \"from last month\"\n }}\n icon={<BarChart3 className=\"h-6 w-6 text-primary-600\" />}\n />\n <StatsCard\n variant=\"gradient\"\n color=\"success\"\n title=\"Revenue\"\n value=\"$45,231\"\n trend={{\n direction: \"up\",\n value: \"+8.2%\",\n label: \"from last month\"\n }}\n icon={<BarChart3 className=\"h-6 w-6\" />}\n />\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;AAIO,MAAM,gBAAgB,GAAa,OACxCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,aACpDC,GAAA,CAAC,SAAS,EAAA,EACR,KAAK,EAAC,aAAa,EACnB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,CAAG,EAAA,CACxD,EACFA,GAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACvC,CAAA,EAAA,CACE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.example.js","sources":["../../../src/components/Switch/Switch.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Switch } from \"./Switch\";\r\n\r\nexport const SwitchExample: React.FC = () => (\r\n <div className=\"space-y-2\">\r\n <label className=\"flex items-center gap-2\">\r\n <Switch /> <span>Default</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch checked /> <span>Checked</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch disabled /> <span>Disabled</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch checked disabled /> <span>Checked & Disabled</span>\r\n </label>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,gBAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,EAAA,GAAA,EAACA,oCAAoB,CAAA,EAAA,CACzB,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,IAAC,OAAO,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,CAAA,EAAA,CACjC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,qCAAqB,CAAA,EAAA,CACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAA+B,CAAA,EAAA,CACrD,CAAA,EAAA,CACJ;;;;"}
1
+ {"version":3,"file":"Switch.example.js","sources":["../../../src/components/Switch/Switch.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Switch } from \"./Switch\";\n\nexport const SwitchExample: React.FC = () => (\n <div className=\"space-y-2\">\n <label className=\"flex items-center gap-2\">\n <Switch /> <span>Default</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch checked /> <span>Checked</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch disabled /> <span>Disabled</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch checked disabled /> <span>Checked & Disabled</span>\n </label>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,gBAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,EAAA,GAAA,EAACA,oCAAoB,CAAA,EAAA,CACzB,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,IAAC,OAAO,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,CAAA,EAAA,CACjC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,qCAAqB,CAAA,EAAA,CACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAA+B,CAAA,EAAA,CACrD,CAAA,EAAA,CACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.example.js","sources":["../../../src/components/Tabs/Tabs.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./Tabs\";\r\n\r\nexport const TabsExample: React.FC = () => {\r\n const [activeTab, setActiveTab] = React.useState(\"tab-1\");\r\n return (\r\n <Tabs value={activeTab} onValueChange={setActiveTab}>\r\n <TabsList>\r\n <TabsTrigger value=\"tab-1\">Tab One</TabsTrigger>\r\n <TabsTrigger value=\"tab-2\">Tab Two</TabsTrigger>\r\n <TabsTrigger value=\"tab-3\">Tab Three</TabsTrigger>\r\n </TabsList>\r\n <TabsContent value=\"tab-1\">\r\n <span className=\"block p-4\">Content for Tab One</span>\r\n </TabsContent>\r\n <TabsContent value=\"tab-2\">\r\n <span className=\"block p-4\">Content for Tab Two</span>\r\n </TabsContent>\r\n <TabsContent value=\"tab-3\">\r\n <span className=\"block p-4\">Content for Tab Three</span>\r\n </TabsContent>\r\n </Tabs>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;AAGO,MAAM,WAAW,GAAa,MAAK;AACxC,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAA,QAAA,EAAA,CACjDA,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACPC,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,wBAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,SAAA,EAAA,CAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,IACzC,EACXA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,qBAAA,EAAA,CAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,oCAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,sCAA6B,EAAA,CAC5C,CAAA,EAAA,CACT;AAEX;;;;"}
1
+ {"version":3,"file":"Tabs.example.js","sources":["../../../src/components/Tabs/Tabs.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./Tabs\";\n\nexport const TabsExample: React.FC = () => {\n const [activeTab, setActiveTab] = React.useState(\"tab-1\");\n return (\n <Tabs value={activeTab} onValueChange={setActiveTab}>\n <TabsList>\n <TabsTrigger value=\"tab-1\">Tab One</TabsTrigger>\n <TabsTrigger value=\"tab-2\">Tab Two</TabsTrigger>\n <TabsTrigger value=\"tab-3\">Tab Three</TabsTrigger>\n </TabsList>\n <TabsContent value=\"tab-1\">\n <span className=\"block p-4\">Content for Tab One</span>\n </TabsContent>\n <TabsContent value=\"tab-2\">\n <span className=\"block p-4\">Content for Tab Two</span>\n </TabsContent>\n <TabsContent value=\"tab-3\">\n <span className=\"block p-4\">Content for Tab Three</span>\n </TabsContent>\n </Tabs>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;AAGO,MAAM,WAAW,GAAa,MAAK;AACxC,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAA,QAAA,EAAA,CACjDA,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACPC,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,wBAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,SAAA,EAAA,CAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,IACzC,EACXA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,qBAAA,EAAA,CAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,oCAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,sCAA6B,EAAA,CAC5C,CAAA,EAAA,CACT;AAEX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.example.js","sources":["../../../src/components/Textarea/Textarea.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Textarea } from \"./Textarea\";\r\n\r\nexport const TextareaExample: React.FC = () => (\r\n <div className=\"space-y-4 max-w-md\">\r\n <Textarea placeholder=\"Default textarea\" />\r\n <Textarea placeholder=\"Success state\" variant=\"success\" />\r\n <Textarea placeholder=\"Error state\" variant=\"error\" />\r\n <div className=\"space-y-2\">\r\n <Textarea placeholder=\"Small (default)\" />\r\n <Textarea placeholder=\"Disabled\" disabled />\r\n </div>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,kBAAkB,EAAA,CAAG,EAC3CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,eAAe,EAAC,OAAO,EAAC,SAAS,EAAA,CAAG,EAC1DA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EACtDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,iBAAiB,EAAA,CAAG,EAC1CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,UAAU,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,CAAA,EAAA,CACxC,CAAA,EAAA,CACF;;;;"}
1
+ {"version":3,"file":"Textarea.example.js","sources":["../../../src/components/Textarea/Textarea.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Textarea } from \"./Textarea\";\n\nexport const TextareaExample: React.FC = () => (\n <div className=\"space-y-4 max-w-md\">\n <Textarea placeholder=\"Default textarea\" />\n <Textarea placeholder=\"Success state\" variant=\"success\" />\n <Textarea placeholder=\"Error state\" variant=\"error\" />\n <div className=\"space-y-2\">\n <Textarea placeholder=\"Small (default)\" />\n <Textarea placeholder=\"Disabled\" disabled />\n </div>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,kBAAkB,EAAA,CAAG,EAC3CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,eAAe,EAAC,OAAO,EAAC,SAAS,EAAA,CAAG,EAC1DA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EACtDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,iBAAiB,EAAA,CAAG,EAC1CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,UAAU,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,CAAA,EAAA,CACxC,CAAA,EAAA,CACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.example.js","sources":["../../../src/components/Toast/Toast.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Toast, showToast } from \"./Toast\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const ToastExample: React.FC = () => (\r\n <>\r\n <Button onClick={() => showToast.success(\"This is a toast notification!\")}>\r\n Show Toast\r\n </Button>\r\n <Toast />\r\n </>\r\n);"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAIO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAEhE,EACTA,GAAA,CAAC,KAAK,EAAA,EAAA,CAAG,CAAA,EAAA,CACR;;;;"}
1
+ {"version":3,"file":"Toast.example.js","sources":["../../../src/components/Toast/Toast.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Toast, showToast } from \"./Toast\";\nimport { Button } from \"../Button\";\n\nexport const ToastExample: React.FC = () => (\n <>\n <Button onClick={() => showToast.success(\"This is a toast notification!\")}>\n Show Toast\n </Button>\n <Toast />\n </>\n);"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAIO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAEhE,EACTA,GAAA,CAAC,KAAK,EAAA,EAAA,CAAG,CAAA,EAAA,CACR;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntersectionObserver.js","sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\r\n\r\nexport interface IntersectionOptions extends IntersectionObserverInit {\r\n freezeOnceVisible?: boolean;\r\n}\r\n\r\n/**\r\n * useIntersectionObserver\r\n * Returns true if the element is in the viewport.\r\n * Usage: const [ref, inView] = useIntersectionObserver(options);\r\n */\r\nexport function useIntersectionObserver<T extends HTMLElement = HTMLElement>(\r\n options?: IntersectionOptions\r\n): [React.RefObject<T>, boolean] {\r\n const [inView, setInView] = useState(false);\r\n const ref = useState<React.RefObject<T>>(() => ({ current: null }))[0];\r\n\r\n useEffect(() => {\r\n const node = ref.current;\r\n if (!node || typeof window === \"undefined\" || !(\"IntersectionObserver\" in window)) {\r\n setInView(true); // Fallback: always load if no observer\r\n return;\r\n }\r\n\r\n let frozen = false;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n if (options?.freezeOnceVisible) {\r\n frozen = true;\r\n observer.disconnect();\r\n }\r\n } else if (!frozen) {\r\n setInView(false);\r\n }\r\n },\r\n options\r\n );\r\n\r\n observer.observe(node);\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }, [ref, options]);\r\n\r\n return [ref, inView];\r\n}"],"names":[],"mappings":";;AAMA;;;;AAIG;AACG,SAAU,uBAAuB,CACrC,OAA6B,EAAA;IAE7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAqB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,EAAE,sBAAsB,IAAI,MAAM,CAAC,EAAE;AACjF,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB;QACF;QAEA,IAAI,MAAM,GAAG,KAAK;QAClB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,KAAI;AACV,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,IAAI,OAAO,EAAE,iBAAiB,EAAE;oBAC9B,MAAM,GAAG,IAAI;oBACb,QAAQ,CAAC,UAAU,EAAE;gBACvB;YACF;iBAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,SAAS,CAAC,KAAK,CAAC;YAClB;QACF,CAAC,EACD,OAAO,CACR;AAED,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtB,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,UAAU,EAAE;AACvB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAElB,IAAA,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACtB;;;;"}
1
+ {"version":3,"file":"useIntersectionObserver.js","sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface IntersectionOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n}\n\n/**\n * useIntersectionObserver\n * Returns true if the element is in the viewport.\n * Usage: const [ref, inView] = useIntersectionObserver(options);\n */\nexport function useIntersectionObserver<T extends HTMLElement = HTMLElement>(\n options?: IntersectionOptions\n): [React.RefObject<T>, boolean] {\n const [inView, setInView] = useState(false);\n const ref = useState<React.RefObject<T>>(() => ({ current: null }))[0];\n\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof window === \"undefined\" || !(\"IntersectionObserver\" in window)) {\n setInView(true); // Fallback: always load if no observer\n return;\n }\n\n let frozen = false;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setInView(true);\n if (options?.freezeOnceVisible) {\n frozen = true;\n observer.disconnect();\n }\n } else if (!frozen) {\n setInView(false);\n }\n },\n options\n );\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [ref, options]);\n\n return [ref, inView];\n}"],"names":[],"mappings":";;AAMA;;;;AAIG;AACG,SAAU,uBAAuB,CACrC,OAA6B,EAAA;IAE7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAqB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,EAAE,sBAAsB,IAAI,MAAM,CAAC,EAAE;AACjF,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB;QACF;QAEA,IAAI,MAAM,GAAG,KAAK;QAClB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,KAAI;AACV,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,IAAI,OAAO,EAAE,iBAAiB,EAAE;oBAC9B,MAAM,GAAG,IAAI;oBACb,QAAQ,CAAC,UAAU,EAAE;gBACvB;YACF;iBAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,SAAS,CAAC,KAAK,CAAC;YAClB;QACF,CAAC,EACD,OAAO,CACR;AAED,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtB,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,UAAU,EAAE;AACvB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAElB,IAAA,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACtB;;;;"}