fictoan-react 2.0.0-beta.17 → 2.0.0-beta.18

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 (181) hide show
  1. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  2. package/dist/components/Accordion/Accordion.js +27 -0
  3. package/dist/components/Accordion/Accordion.js.map +1 -0
  4. package/dist/components/Badge/Badge.d.ts.map +1 -1
  5. package/dist/components/Badge/Badge.js +56 -0
  6. package/dist/components/Badge/Badge.js.map +1 -0
  7. package/dist/components/Breadcrumbs/Breadcrumbs.js +65 -0
  8. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  9. package/dist/components/Button/Button.js +28 -0
  10. package/dist/components/Button/Button.js.map +1 -0
  11. package/dist/components/ButtonGroup/ButtonGroup.js +27 -0
  12. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
  13. package/dist/components/Callout/Callout.js +31 -0
  14. package/dist/components/Callout/Callout.js.map +1 -0
  15. package/dist/components/Card/Card.js +27 -0
  16. package/dist/components/Card/Card.js.map +1 -0
  17. package/dist/components/CodeBlock/CodeBlock.js +191 -0
  18. package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
  19. package/dist/components/Divider/Divider.js +29 -0
  20. package/dist/components/Divider/Divider.js.map +1 -0
  21. package/dist/components/Drawer/Drawer.d.ts +3 -0
  22. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  23. package/dist/components/Drawer/Drawer.js +96 -0
  24. package/dist/components/Drawer/Drawer.js.map +1 -0
  25. package/dist/components/Element/Element.d.ts +6 -2
  26. package/dist/components/Element/Element.d.ts.map +1 -1
  27. package/dist/components/Element/Element.js +152 -0
  28. package/dist/components/Element/Element.js.map +1 -0
  29. package/dist/components/Element/Tags.js +31 -0
  30. package/dist/components/Element/Tags.js.map +1 -0
  31. package/dist/components/Element/constants.js +8 -0
  32. package/dist/components/Element/constants.js.map +1 -0
  33. package/dist/components/Form/Checkbox/Checkbox.d.ts.map +1 -1
  34. package/dist/components/Form/Checkbox/Checkbox.js +78 -0
  35. package/dist/components/Form/Checkbox/Checkbox.js.map +1 -0
  36. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.d.ts.map +1 -1
  37. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js +177 -0
  38. package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js.map +1 -0
  39. package/dist/components/Form/Checkbox/Switch.d.ts.map +1 -1
  40. package/dist/components/Form/Checkbox/Switch.js +78 -0
  41. package/dist/components/Form/Checkbox/Switch.js.map +1 -0
  42. package/dist/components/Form/FileUpload/FileUpload.d.ts.map +1 -1
  43. package/dist/components/Form/FileUpload/FileUpload.js +142 -0
  44. package/dist/components/Form/FileUpload/FileUpload.js.map +1 -0
  45. package/dist/components/Form/Form/Form.js +37 -0
  46. package/dist/components/Form/Form/Form.js.map +1 -0
  47. package/dist/components/Form/Form/FormGenerator.js +64 -0
  48. package/dist/components/Form/Form/FormGenerator.js.map +1 -0
  49. package/dist/components/Form/FormItem/FormItem.d.ts +16 -0
  50. package/dist/components/Form/FormItem/FormItem.d.ts.map +1 -1
  51. package/dist/components/Form/FormItem/FormItem.js +127 -0
  52. package/dist/components/Form/FormItem/FormItem.js.map +1 -0
  53. package/dist/components/Form/FormItemGroup/FormItemGroup.js +42 -0
  54. package/dist/components/Form/FormItemGroup/FormItemGroup.js.map +1 -0
  55. package/dist/components/Form/InputField/InputField.d.ts.map +1 -1
  56. package/dist/components/Form/InputField/InputField.js +156 -0
  57. package/dist/components/Form/InputField/InputField.js.map +1 -0
  58. package/dist/components/Form/InputLabel/InputLabel.js +30 -0
  59. package/dist/components/Form/InputLabel/InputLabel.js.map +1 -0
  60. package/dist/components/Form/ListBox/ListBox.d.ts.map +1 -1
  61. package/dist/components/Form/ListBox/ListBox.js +284 -0
  62. package/dist/components/Form/ListBox/ListBox.js.map +1 -0
  63. package/dist/components/Form/ListBox/constants.d.ts +1 -1
  64. package/dist/components/Form/ListBox/constants.d.ts.map +1 -1
  65. package/dist/components/Form/ListBox/listBoxUtils.js +49 -0
  66. package/dist/components/Form/ListBox/listBoxUtils.js.map +1 -0
  67. package/dist/components/Form/PinInputField/PinInputField.d.ts +6 -1
  68. package/dist/components/Form/PinInputField/PinInputField.d.ts.map +1 -1
  69. package/dist/components/Form/PinInputField/PinInputField.js +165 -0
  70. package/dist/components/Form/PinInputField/PinInputField.js.map +1 -0
  71. package/dist/components/Form/RadioButton/RadioButton.d.ts.map +1 -1
  72. package/dist/components/Form/RadioButton/RadioButton.js +82 -0
  73. package/dist/components/Form/RadioButton/RadioButton.js.map +1 -0
  74. package/dist/components/Form/RadioButton/RadioGroup.d.ts.map +1 -1
  75. package/dist/components/Form/RadioButton/RadioGroup.js +97 -0
  76. package/dist/components/Form/RadioButton/RadioGroup.js.map +1 -0
  77. package/dist/components/Form/RadioButton/RadioTabGroup.d.ts.map +1 -1
  78. package/dist/components/Form/RadioButton/RadioTabGroup.js +182 -0
  79. package/dist/components/Form/RadioButton/RadioTabGroup.js.map +1 -0
  80. package/dist/components/Form/Range/Range.js +376 -0
  81. package/dist/components/Form/Range/Range.js.map +1 -0
  82. package/dist/components/Form/Select/Select.d.ts.map +1 -1
  83. package/dist/components/Form/Select/Select.js +83 -0
  84. package/dist/components/Form/Select/Select.js.map +1 -0
  85. package/dist/components/Form/TextArea/TextArea.d.ts.map +1 -1
  86. package/dist/components/Form/TextArea/TextArea.js +111 -0
  87. package/dist/components/Form/TextArea/TextArea.js.map +1 -0
  88. package/dist/components/Meter/Meter.js +110 -0
  89. package/dist/components/Meter/Meter.js.map +1 -0
  90. package/dist/components/Modal/Modal.d.ts.map +1 -1
  91. package/dist/components/Modal/Modal.js +75 -0
  92. package/dist/components/Modal/Modal.js.map +1 -0
  93. package/dist/components/Notification/NotificationItem/NotificationItem.d.ts.map +1 -1
  94. package/dist/components/Notification/NotificationItem/NotificationItem.js +70 -0
  95. package/dist/components/Notification/NotificationItem/NotificationItem.js.map +1 -0
  96. package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js +88 -0
  97. package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js.map +1 -0
  98. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.d.ts.map +1 -1
  99. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js +35 -0
  100. package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js.map +1 -0
  101. package/dist/components/OptionCard/OptionCard.js +150 -0
  102. package/dist/components/OptionCard/OptionCard.js.map +1 -0
  103. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  104. package/dist/components/Pagination/Pagination.js +206 -0
  105. package/dist/components/Pagination/Pagination.js.map +1 -0
  106. package/dist/components/Pagination/usePagination.js +35 -0
  107. package/dist/components/Pagination/usePagination.js.map +1 -0
  108. package/dist/components/Portion/Portion.js +34 -0
  109. package/dist/components/Portion/Portion.js.map +1 -0
  110. package/dist/components/ProgressBar/ProgressBar.js +63 -0
  111. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  112. package/dist/components/Row/Row.js +40 -0
  113. package/dist/components/Row/Row.js.map +1 -0
  114. package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js +23 -0
  115. package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js.map +1 -0
  116. package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js +25 -0
  117. package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
  118. package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js +25 -0
  119. package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
  120. package/dist/components/Sidebar/SidebarItem/SidebarItem.js +30 -0
  121. package/dist/components/Sidebar/SidebarItem/SidebarItem.js.map +1 -0
  122. package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js +29 -0
  123. package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js.map +1 -0
  124. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.d.ts.map +1 -1
  125. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js +35 -0
  126. package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js.map +1 -0
  127. package/dist/components/Skeleton/Skeleton.js +84 -0
  128. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  129. package/dist/components/Spinner/Spinner.js +33 -0
  130. package/dist/components/Spinner/Spinner.js.map +1 -0
  131. package/dist/components/Table/Table.js +53 -0
  132. package/dist/components/Table/Table.js.map +1 -0
  133. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  134. package/dist/components/Tabs/Tabs.js +104 -0
  135. package/dist/components/Tabs/Tabs.js.map +1 -0
  136. package/dist/components/ThemeProvider/ThemeProvider.d.ts +6 -0
  137. package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  138. package/dist/components/ThemeProvider/ThemeProvider.js +52 -0
  139. package/dist/components/ThemeProvider/ThemeProvider.js.map +1 -0
  140. package/dist/components/Toast/ToastItem/ToastItem.js +47 -0
  141. package/dist/components/Toast/ToastItem/ToastItem.js.map +1 -0
  142. package/dist/components/Toast/ToastsProvider/ToastsProvider.js +45 -0
  143. package/dist/components/Toast/ToastsProvider/ToastsProvider.js.map +1 -0
  144. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.d.ts.map +1 -1
  145. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js +28 -0
  146. package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js.map +1 -0
  147. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  148. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  149. package/dist/components/Tooltip/Tooltip.js +62 -0
  150. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  151. package/dist/components/Typography/Heading.js +30 -0
  152. package/dist/components/Typography/Heading.js.map +1 -0
  153. package/dist/components/Typography/Text.js +15 -0
  154. package/dist/components/Typography/Text.js.map +1 -0
  155. package/dist/components/index.js +124 -75
  156. package/dist/components/index.js.map +1 -1
  157. package/dist/fictoan-schema.json +2070 -0
  158. package/dist/hooks/UseClickOutside.js +17 -0
  159. package/dist/hooks/UseClickOutside.js.map +1 -0
  160. package/dist/hooks/UseViewTransition.d.ts +2 -0
  161. package/dist/hooks/UseViewTransition.d.ts.map +1 -0
  162. package/dist/hooks/UseViewTransition.js +17 -0
  163. package/dist/hooks/UseViewTransition.js.map +1 -0
  164. package/dist/index.css +6 -10661
  165. package/dist/index.d.ts +1 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +142 -151
  168. package/dist/index.js.map +1 -1
  169. package/dist/scripts/generateSchema.d.ts +2 -0
  170. package/dist/scripts/generateSchema.d.ts.map +1 -0
  171. package/dist/scripts/schema-meta.d.ts +12 -0
  172. package/dist/scripts/schema-meta.d.ts.map +1 -0
  173. package/dist/styles/colours.js +55 -0
  174. package/dist/styles/colours.js.map +1 -0
  175. package/dist/utils/classNames.js +6 -0
  176. package/dist/utils/classNames.js.map +1 -0
  177. package/dist/utils/propSeparation.js +77 -0
  178. package/dist/utils/propSeparation.js.map +1 -0
  179. package/package.json +12 -18
  180. package/dist/Accordion-CeGNgNW8.js +0 -4254
  181. package/dist/Accordion-CeGNgNW8.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.js","sources":["../../../src/components/Row/Row.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps, SpacingTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./row.css\";\n\ninterface RowCustomProps {\n layout ? : \"grid\" | \"flexbox\";\n gutters ? : SpacingTypes;\n retainLayoutOnTabletLandscape ? : boolean;\n retainLayoutOnTabletPortrait ? : boolean;\n retainLayoutOnMobile ? : boolean;\n retainLayoutAlways ? : boolean;\n allowUltraWide ? : boolean;\n groupLabel ? : string;\n}\n\nexport type RowElementType = HTMLDivElement;\nexport type RowProps = Omit<CommonAndHTMLProps<RowElementType>, keyof RowCustomProps> & RowCustomProps;\n\n// TODO: Fix fixed gutter widths\n\n// COMPONENT //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Row = React.forwardRef(\n (\n {\n layout = \"grid\",\n gutters = \"medium\",\n retainLayoutOnTabletLandscape,\n retainLayoutOnTabletPortrait,\n retainLayoutOnMobile,\n retainLayoutAlways,\n allowUltraWide,\n groupLabel,\n ...props\n } : RowProps,\n ref : React.Ref<RowElementType>,\n ) => {\n // CLASS NAMES -------------------------------------------------------------------------------------------------\n let classNames = [];\n\n if (layout) {\n classNames.push(`layout-${layout}`);\n }\n\n if (gutters) {\n classNames.push(gutters === \"none\" ? \"no-gutters\" : `${gutters}-gutters`);\n }\n\n // Add medium gutters by default for grid layouts only, remove them for flexbox layouts\n //\n // if (conditionalGutters) {\n // }\n\n // if (equaliseChildren || equalizeChildren) {\n // classNames.push(\"equalise-children\");\n // }\n\n if (retainLayoutOnTabletLandscape) {\n classNames.push(\"retain-layout-on-tablet-landscape\");\n }\n\n if (retainLayoutOnTabletPortrait) {\n classNames.push(\"retain-layout-on-tablet-portrait\");\n }\n\n if (retainLayoutOnMobile) {\n classNames.push(\"retain-layout-on-mobile\");\n }\n\n if (retainLayoutAlways) {\n classNames.push(\n \"retain-layout-on-tablet-landscape retain-layout-on-tablet-portrait retain-layout-on-mobile\",\n );\n }\n\n if (allowUltraWide) {\n classNames.push(\"allow-ultra-wide\");\n }\n\n // RENDER -----------------------------------------------------------------------------------------------------\n return (\n <Element<RowElementType>\n as=\"div\"\n data-row\n ref={ref}\n classNames={[ classNames.join(\" \") ]}\n marginBottom=\"tiny\"\n role=\"grid\"\n aria-label={groupLabel}\n {...props}\n />\n );\n },\n);\nRow.displayName = \"Row\";\n"],"names":["Row","React","layout","gutters","retainLayoutOnTabletLandscape","retainLayoutOnTabletPortrait","retainLayoutOnMobile","retainLayoutAlways","allowUltraWide","groupLabel","props","ref","classNames","jsx","Element"],"mappings":";;;;AA2BO,MAAMA,IAAMC,EAAM;AAAA,EACrB,CACI;AAAA,IACI,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,+BAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AAED,QAAIC,IAAa,CAAA;AAEjB,WAAIV,KACAU,EAAW,KAAK,UAAUV,CAAM,EAAE,GAGlCC,KACAS,EAAW,KAAKT,MAAY,SAAS,eAAe,GAAGA,CAAO,UAAU,GAYxEC,KACAQ,EAAW,KAAK,mCAAmC,GAGnDP,KACAO,EAAW,KAAK,kCAAkC,GAGlDN,KACAM,EAAW,KAAK,yBAAyB,GAGzCL,KACAK,EAAW;AAAA,MACP;AAAA,IAAA,GAIJJ,KACAI,EAAW,KAAK,kBAAkB,GAKlC,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,YAAQ;AAAA,QACR,KAAAH;AAAA,QACA,YAAY,CAAEC,EAAW,KAAK,GAAG,CAAE;AAAA,QACnC,cAAa;AAAA,QACb,MAAK;AAAA,QACL,cAAYH;AAAA,QACX,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAV,EAAI,cAAc;"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ import o from "react";
4
+ /* empty css */
5
+ import { Element as n } from "../../Element/Element.js";
6
+ const p = o.forwardRef(
7
+ ({ label: r, ...t }, e) => /* @__PURE__ */ a(
8
+ n,
9
+ {
10
+ as: "main",
11
+ "data-content-wrapper": !0,
12
+ ref: e,
13
+ role: "main",
14
+ "aria-label": r || "Main content",
15
+ ...t
16
+ }
17
+ )
18
+ );
19
+ p.displayName = "ContentWrapper";
20
+ export {
21
+ p as ContentWrapper
22
+ };
23
+ //# sourceMappingURL=ContentWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentWrapper.js","sources":["../../../../src/components/Sidebar/ContentWrapper/ContentWrapper.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./content-wrapper.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\nexport type ContentWrapperElementType = HTMLDivElement;\ninterface ContentWrapperCustomProps {\n label ? : string;\n // For aria-label\n}\nexport type ContentWrapperProps = CommonAndHTMLProps<ContentWrapperElementType> & ContentWrapperCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const ContentWrapper = React.forwardRef(\n (\n { label, ...props }: ContentWrapperProps, ref: React.Ref<ContentWrapperElementType>) => {\n\n return (\n <Element<ContentWrapperElementType>\n as=\"main\"\n data-content-wrapper\n ref={ref}\n role=\"main\"\n aria-label={label || \"Main content\"}\n {...props}\n />\n );\n }\n);\nContentWrapper.displayName = \"ContentWrapper\";\n"],"names":["ContentWrapper","React","label","props","ref","jsx","Element"],"mappings":";;;;AAoBO,MAAMA,IAAiBC,EAAM;AAAA,EAChC,CACI,EAAE,OAAAC,GAAO,GAAGC,EAAA,GAA8BC,MAGtC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,wBAAoB;AAAA,MACpB,KAAAF;AAAA,MACA,MAAK;AAAA,MACL,cAAYF,KAAS;AAAA,MACpB,GAAGC;AAAA,IAAA;AAAA,EAAA;AAIpB;AACAH,EAAe,cAAc;"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ import i from "react";
4
+ /* empty css */
5
+ import { Element as s } from "../../Element/Element.js";
6
+ const m = i.forwardRef(
7
+ ({ isSticky: o, ...e }, t) => {
8
+ let r = [];
9
+ return o && r.push("is-sticky"), /* @__PURE__ */ a(
10
+ s,
11
+ {
12
+ as: "footer",
13
+ "data-sidebar-footer": !0,
14
+ ref: t,
15
+ classNames: r,
16
+ ...e
17
+ }
18
+ );
19
+ }
20
+ );
21
+ m.displayName = "SidebarFooter";
22
+ export {
23
+ m as SidebarFooter
24
+ };
25
+ //# sourceMappingURL=SidebarFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarFooter.js","sources":["../../../../src/components/Sidebar/SidebarFooter/SidebarFooter.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-footer.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\n// prettier-ignore\nexport interface SidebarFooterCustomProps {\n isSticky ? : boolean;\n}\n\nexport type SidebarFooterElementType = HTMLDivElement;\nexport type SidebarFooterNewProps = Omit<CommonAndHTMLProps<SidebarFooterElementType>, keyof SidebarFooterCustomProps>\n & SidebarFooterCustomProps;\n\nexport const SidebarFooter = React.forwardRef(\n ({ isSticky, ...props }: SidebarFooterNewProps, ref: React.Ref<SidebarFooterElementType>) => {\n let classNames = [];\n\n if (isSticky) {\n classNames.push(\"is-sticky\");\n }\n\n return (\n <Element<SidebarFooterElementType>\n as=\"footer\"\n data-sidebar-footer\n ref={ref}\n classNames={classNames}\n {...props}\n />\n );\n });\nSidebarFooter.displayName = \"SidebarFooter\";\n"],"names":["SidebarFooter","React","isSticky","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAgBC,EAAM;AAAA,EAC/B,CAAC,EAAE,UAAAC,GAAU,GAAGC,EAAA,GAAgCC,MAA6C;AACzF,QAAIC,IAAa,CAAA;AAEjB,WAAIH,KACAG,EAAW,KAAK,WAAW,GAI3B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,uBAAmB;AAAA,QACnB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AAAC;AACLH,EAAc,cAAc;"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as i } from "react/jsx-runtime";
3
+ import s from "react";
4
+ /* empty css */
5
+ import { Element as d } from "../../Element/Element.js";
6
+ const m = s.forwardRef(
7
+ ({ isSticky: r, ...a }, t) => {
8
+ let e = [];
9
+ return r && e.push("is-sticky"), /* @__PURE__ */ i(
10
+ d,
11
+ {
12
+ as: "header",
13
+ "data-sidebar-header": !0,
14
+ ref: t,
15
+ classNames: e,
16
+ ...a
17
+ }
18
+ );
19
+ }
20
+ );
21
+ m.displayName = "SidebarHeader";
22
+ export {
23
+ m as SidebarHeader
24
+ };
25
+ //# sourceMappingURL=SidebarHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarHeader.js","sources":["../../../../src/components/Sidebar/SidebarHeader/SidebarHeader.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-header.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\n// prettier-ignore\nexport interface SidebarHeaderCustomProps {\n isSticky ? : boolean;\n}\n\nexport type SidebarHeaderElementType = HTMLDivElement;\nexport type SidebarHeaderNewProps = Omit<CommonAndHTMLProps<SidebarHeaderElementType>, keyof SidebarHeaderCustomProps>\n & SidebarHeaderCustomProps;\n\nexport const SidebarHeader = React.forwardRef(\n ({ isSticky, ...props }: SidebarHeaderNewProps, ref: React.Ref<SidebarHeaderElementType>) => {\n let classNames = [];\n\n if (isSticky) {\n classNames.push(\"is-sticky\");\n }\n\n return (\n <Element<SidebarHeaderElementType>\n as=\"header\"\n data-sidebar-header\n ref={ref}\n classNames={classNames}\n {...props}\n />\n );\n }\n);\nSidebarHeader.displayName = \"SidebarHeader\";\n"],"names":["SidebarHeader","React","isSticky","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAgBC,EAAM;AAAA,EAC/B,CAAC,EAAE,UAAAC,GAAU,GAAGC,EAAA,GAAgCC,MAA6C;AACzF,QAAIC,IAAa,CAAA;AAEjB,WAAIH,KACAG,EAAW,KAAK,WAAW,GAI3B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,uBAAmB;AAAA,QACnB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAH,EAAc,cAAc;"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsxs as o, jsx as p } from "react/jsx-runtime";
3
+ import f from "react";
4
+ import { Div as d } from "../../Element/Tags.js";
5
+ /* empty css */
6
+ import { Element as l } from "../../Element/Element.js";
7
+ const c = f.forwardRef(
8
+ ({ hasAlert: i, hasEmptyIcon: r, hasNoIcon: a, children: s, ...t }, m) => {
9
+ let e = [];
10
+ return i && e.push("has-alert"), r ? e.push("has-empty-icon") : a && e.push("has-no-icon"), /* @__PURE__ */ o(
11
+ l,
12
+ {
13
+ as: "div",
14
+ "data-sidebar-item": !0,
15
+ ref: m,
16
+ classNames: e,
17
+ ...t,
18
+ children: [
19
+ r && /* @__PURE__ */ p(d, { className: "empty-icon-wrapper" }),
20
+ s
21
+ ]
22
+ }
23
+ );
24
+ }
25
+ );
26
+ c.displayName = "SidebarItem";
27
+ export {
28
+ c as SidebarItem
29
+ };
30
+ //# sourceMappingURL=SidebarItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItem.js","sources":["../../../../src/components/Sidebar/SidebarItem/SidebarItem.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Div } from \"$tags\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-item.css\";\n\ntype BaseItemProps = {\n hasAlert ? : boolean;\n}\n\ntype IconProps =\n | {\n hasEmptyIcon : boolean;\n hasNoIcon ? : never;\n } // If hasEmptyIcon is set, hasNoIcon can't be set\n | {\n hasEmptyIcon ? : never;\n hasNoIcon : boolean;\n } // If hasNoIcon is set, hasEmptyIcon can't be set\n | {\n hasEmptyIcon ? : never;\n hasNoIcon ? : never;\n } // Neither is set\n\nexport type SidebarItemCustomProps = BaseItemProps & IconProps;\n\nexport type SidebarItemElementType = HTMLDivElement;\nexport type SidebarItemNewProps = Omit<CommonAndHTMLProps<SidebarItemElementType>, keyof SidebarItemCustomProps> &\n SidebarItemCustomProps;\n\nexport const SidebarItem = React.forwardRef(\n (\n {hasAlert, hasEmptyIcon, hasNoIcon, children, ...props} : SidebarItemNewProps,\n ref : React.Ref<SidebarItemElementType>) => {\n let classNames = [];\n\n if (hasAlert) {\n classNames.push(\"has-alert\");\n }\n\n if (hasEmptyIcon) {\n classNames.push(\"has-empty-icon\");\n } else if (hasNoIcon) {\n classNames.push(\"has-no-icon\");\n }\n\n return (\n <Element<SidebarItemElementType>\n as=\"div\"\n data-sidebar-item\n ref={ref}\n classNames={classNames}\n {...props}\n >\n {hasEmptyIcon && <Div className=\"empty-icon-wrapper\" />}\n {children}\n </Element>\n );\n },\n);\nSidebarItem.displayName = \"SidebarItem\";\n"],"names":["SidebarItem","React","hasAlert","hasEmptyIcon","hasNoIcon","children","props","ref","classNames","jsxs","Element","jsx","Div"],"mappings":";;;;;AAmCO,MAAMA,IAAcC,EAAM;AAAA,EAC7B,CACI,EAAC,UAAAC,GAAU,cAAAC,GAAc,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GACjDC,MAA4C;AAC5C,QAAIC,IAAa,CAAA;AAEjB,WAAIN,KACAM,EAAW,KAAK,WAAW,GAG3BL,IACAK,EAAW,KAAK,gBAAgB,IACzBJ,KACPI,EAAW,KAAK,aAAa,GAI7B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,qBAAiB;AAAA,QACjB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,QAEH,UAAA;AAAA,UAAAH,KAAgB,gBAAAQ,EAACC,GAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,UACpDP;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAL,EAAY,cAAc;"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsxs as a, jsx as m } from "react/jsx-runtime";
3
+ import s from "react";
4
+ /* empty css */
5
+ import { Element as i } from "../../Element/Element.js";
6
+ const p = s.forwardRef(
7
+ ({
8
+ title: r,
9
+ children: e,
10
+ ...o
11
+ }, t) => /* @__PURE__ */ a(
12
+ i,
13
+ {
14
+ as: "nav",
15
+ "data-sidebar-items-group": !0,
16
+ ref: t,
17
+ ...o,
18
+ children: [
19
+ r && /* @__PURE__ */ m("p", { className: "group-title", children: r }),
20
+ e
21
+ ]
22
+ }
23
+ )
24
+ );
25
+ p.displayName = "SidebarItemsGroup";
26
+ export {
27
+ p as SidebarItemsGroup
28
+ };
29
+ //# sourceMappingURL=SidebarItemsGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItemsGroup.js","sources":["../../../../src/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-items-group.css\";\n\n// prettier-ignore\nexport interface SidebarItemsGroupCustomProps {\n title ? : string;\n}\n\nexport type SidebarItemsGroupElementType = HTMLDivElement;\nexport type SidebarItemsGroupNewProps = Omit<CommonAndHTMLProps<SidebarItemsGroupElementType>,\n keyof SidebarItemsGroupCustomProps> & SidebarItemsGroupCustomProps;\n\nexport const SidebarItemsGroup = React.forwardRef(\n (\n {\n title,\n children,\n ...props\n }: SidebarItemsGroupNewProps, forwardedRef: React.Ref<SidebarItemsGroupElementType>) => {\n\n return (\n <Element<SidebarItemsGroupElementType>\n as=\"nav\"\n data-sidebar-items-group\n ref={forwardedRef}\n {...props}\n >\n {title && <p className=\"group-title\">{title}</p>}\n {children}\n </Element>\n );\n },\n);\nSidebarItemsGroup.displayName = \"SidebarItemsGroup\";\n"],"names":["SidebarItemsGroup","React","title","children","props","forwardedRef","jsxs","Element","jsx"],"mappings":";;;;AAmBO,MAAMA,IAAoBC,EAAM;AAAA,EACnC,CACI;AAAA,IACI,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACuBC,MAG1B,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,4BAAwB;AAAA,MACxB,KAAKF;AAAA,MACJ,GAAGD;AAAA,MAEH,UAAA;AAAA,QAAAF,KAAS,gBAAAM,EAAC,KAAA,EAAE,WAAU,eAAe,UAAAN,GAAM;AAAA,QAC3CC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIjB;AACAH,EAAkB,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,yBAAyB;IACtC,SAAoB,CAAC,EAAG,OAAO,CAAC;IAChC,mBAAoB,CAAC,EAAG,MAAM,IAAI,CAAC;IACnC,iBAAoB,CAAC,EAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,EACnF,MAAM,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AAEjE,eAAO,MAAM,cAAc,8KAwC1B,CAAC"}
1
+ {"version":3,"file":"SidebarWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,yBAAyB;IACtC,SAAoB,CAAC,EAAG,OAAO,CAAC;IAChC,mBAAoB,CAAC,EAAG,MAAM,IAAI,CAAC;IACnC,iBAAoB,CAAC,EAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,EACnF,MAAM,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AAEjE,eAAO,MAAM,cAAc,8KAuC1B,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsx as o } from "react/jsx-runtime";
3
+ import f, { useRef as m, useImperativeHandle as d } from "react";
4
+ import { useClickOutside as n } from "../../../hooks/UseClickOutside.js";
5
+ /* empty css */
6
+ import { Element as u } from "../../Element/Element.js";
7
+ const l = f.forwardRef(
8
+ ({
9
+ collapsed: t,
10
+ closeOnClickOutside: a,
11
+ showMobileSidebar: p,
12
+ ...i
13
+ }, s) => {
14
+ const e = m(null);
15
+ d(s, () => e.current), n(e, () => {
16
+ typeof a == "function" && a();
17
+ });
18
+ let r = [];
19
+ return t && r.push("collapsed"), p && r.push("show-sidebar"), /* @__PURE__ */ o(
20
+ u,
21
+ {
22
+ as: "aside",
23
+ "data-sidebar-wrapper": !0,
24
+ ref: e,
25
+ classNames: r,
26
+ ...i
27
+ }
28
+ );
29
+ }
30
+ );
31
+ l.displayName = "SidebarWrapper";
32
+ export {
33
+ l as SidebarWrapper
34
+ };
35
+ //# sourceMappingURL=SidebarWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarWrapper.js","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useRef, useImperativeHandle } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Element } from \"$element\";\n\n// HOOKS ===============================================================================================================\nimport { useClickOutside } from \"../../../hooks/UseClickOutside\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-wrapper.css\";\n\n// prettier-ignore\nexport interface SidebarWrapperCustomProps {\n collapsed ? : boolean;\n closeOnClickOutside ? : () => void;\n showMobileSidebar ? : boolean;\n}\n\nexport type SidebarWrapperElementType = HTMLDivElement;\nexport type SidebarWrapperNewProps = Omit<CommonAndHTMLProps<SidebarWrapperElementType>,\n keyof SidebarWrapperCustomProps> & SidebarWrapperCustomProps;\n\nexport const SidebarWrapper = React.forwardRef(\n (\n {\n collapsed,\n closeOnClickOutside,\n showMobileSidebar,\n ...props\n } : SidebarWrapperNewProps, forwardedRef : React.Ref<SidebarWrapperElementType>) => {\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(forwardedRef, () => internalRef.current!);\n\n useClickOutside(internalRef, () => {\n if (typeof closeOnClickOutside === \"function\") {\n closeOnClickOutside();\n }\n });\n\n let classNames = [];\n\n if (collapsed) {\n classNames.push(\"collapsed\");\n }\n\n if (showMobileSidebar) {\n classNames.push(\"show-sidebar\");\n }\n\n return (\n <Element<SidebarWrapperElementType>\n as=\"aside\"\n data-sidebar-wrapper\n ref={internalRef}\n classNames={classNames}\n {...props}\n />\n );\n },\n);\nSidebarWrapper.displayName = \"SidebarWrapper\";\n"],"names":["SidebarWrapper","React","collapsed","closeOnClickOutside","showMobileSidebar","props","forwardedRef","internalRef","useRef","useImperativeHandle","useClickOutside","classNames","jsx","Element"],"mappings":";;;;;AAwBO,MAAMA,IAAiBC,EAAM;AAAA,EAChC,CACI;AAAA,IACI,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACqBC,MAAwD;AAEpF,UAAMC,IAAcC,EAAuB,IAAI;AAE/C,IAAAC,EAAoBH,GAAc,MAAMC,EAAY,OAAQ,GAE5DG,EAAgBH,GAAa,MAAM;AAC/B,MAAI,OAAOJ,KAAwB,cAC/BA,EAAA;AAAA,IAER,CAAC;AAED,QAAIQ,IAAa,CAAA;AAEjB,WAAIT,KACAS,EAAW,KAAK,WAAW,GAG3BP,KACAO,EAAW,KAAK,cAAc,GAI9B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,wBAAoB;AAAA,QACpB,KAAKN;AAAA,QACL,YAAAI;AAAA,QACC,GAAGN;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAL,EAAe,cAAc;"}
@@ -0,0 +1,84 @@
1
+ "use client";
2
+ import { jsx as p } from "react/jsx-runtime";
3
+ import d, { useContext as b, createContext as g } from "react";
4
+ /* empty css */
5
+ import { Element as v } from "../Element/Element.js";
6
+ const x = g({
7
+ effect: "wave",
8
+ animate: !0
9
+ }), $ = d.forwardRef(({
10
+ variant: e = "line",
11
+ width: t,
12
+ height: r,
13
+ shape: s,
14
+ effect: u,
15
+ loadingLabel: f,
16
+ ...l
17
+ }, n) => {
18
+ const i = b(x), c = u || i.effect, o = f || i.loadingLabel || "Loading...";
19
+ let a = [];
20
+ e && a.push(`variant-${e}`), s && a.push(`shape-${s}`), c && a.push(`effect-${c}`);
21
+ const m = t || "100%", y = e === "circle" ? (typeof t == "number" ? `${t}px` : t) || r || "100%" : r, k = {
22
+ width: m,
23
+ height: y,
24
+ aspectRatio: e === "circle" ? "1 / 1" : "auto",
25
+ ...l.style
26
+ };
27
+ return /* @__PURE__ */ p(
28
+ v,
29
+ {
30
+ as: "div",
31
+ "data-skeleton": !0,
32
+ ref: n,
33
+ classNames: a,
34
+ style: k,
35
+ role: "progressbar",
36
+ "aria-busy": "true",
37
+ "aria-valuemin": 0,
38
+ "aria-valuemax": 100,
39
+ "aria-valuetext": o,
40
+ "aria-label": o,
41
+ ...l
42
+ }
43
+ );
44
+ });
45
+ $.displayName = "Skeleton";
46
+ const h = d.forwardRef(({
47
+ effect: e = "wave",
48
+ spacing: t = "small",
49
+ animate: r = !0,
50
+ repeat: s = 1,
51
+ direction: u = "vertical",
52
+ children: f,
53
+ classNames: l = [],
54
+ loadingLabel: n = "Loading content...",
55
+ ...i
56
+ }, c) => {
57
+ const o = [
58
+ `direction-${u}`,
59
+ e && `effect-${e}`,
60
+ ...l
61
+ ];
62
+ return t && o.push(`spacing-${t}`), /* @__PURE__ */ p(x.Provider, { value: { effect: e, animate: r, loadingLabel: n }, children: /* @__PURE__ */ p(
63
+ v,
64
+ {
65
+ as: "div",
66
+ ref: c,
67
+ "data-skeleton-group": !0,
68
+ classNames: o,
69
+ role: "status",
70
+ "aria-busy": "true",
71
+ "aria-label": n,
72
+ ...i,
73
+ children: Array(s).fill(f).map((a, m) => d.cloneElement(a, {
74
+ key: m
75
+ }))
76
+ }
77
+ ) });
78
+ });
79
+ h.displayName = "SkeletonGroup";
80
+ export {
81
+ $ as Skeleton,
82
+ h as SkeletonGroup
83
+ };
84
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { createContext, useContext } from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps, ShapeTypes, SpacingTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./skeleton.css\";\n\n// Common skeleton props shared between Skeleton and SkeletonGroup\ninterface CommonSkeletonProps {\n effect ? : \"pulse\" | \"wave\" | \"none\";\n animate ? : boolean;\n loadingLabel ? : string;\n // Accessible label for loading state\n}\n\n// Context to share common properties\nconst SkeletonContext = createContext<CommonSkeletonProps>({\n effect : \"wave\",\n animate : true,\n});\n\n// Props specific to individual Skeleton elements\ninterface SkeletonCustomProps extends CommonSkeletonProps {\n variant ? : \"line\" | \"circle\" | \"block\";\n width ? : string | number;\n height ? : string | number;\n shape ? : ShapeTypes;\n}\n\n// Props specific to SkeletonGroup\ninterface SkeletonGroupCustomProps extends CommonSkeletonProps {\n repeat ? : number;\n direction ? : \"vertical\" | \"horizontal\";\n spacing ? : SpacingTypes;\n}\n\nexport type SkeletonElementType = HTMLDivElement;\nexport type SkeletonProps =\n Omit<CommonAndHTMLProps<SkeletonElementType>, keyof SkeletonCustomProps>\n & SkeletonCustomProps;\nexport type SkeletonGroupProps =\n Omit<CommonAndHTMLProps<SkeletonElementType>, keyof SkeletonGroupCustomProps>\n & SkeletonGroupCustomProps;\n\n// COMPONENTS //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Skeleton = React.forwardRef((\n {\n variant = \"line\",\n width,\n height,\n shape,\n effect: localEffect,\n loadingLabel,\n ...props\n }: SkeletonProps, ref: React.Ref<SkeletonElementType>) => {\n // Get shared properties from group context\n const groupContext = useContext(SkeletonContext);\n\n const effectiveEffect = localEffect || groupContext.effect;\n const effectiveLabel = loadingLabel || groupContext.loadingLabel || \"Loading...\";\n\n let classNames = [];\n\n if (variant) {\n classNames.push(`variant-${variant}`);\n }\n\n if (shape) {\n classNames.push(`shape-${shape}`);\n }\n\n if (effectiveEffect) {\n classNames.push(`effect-${effectiveEffect}`);\n }\n\n // Handle circle variant dimensions\n const computedWidth = width || \"100%\";\n const computedHeight = variant === \"circle\"\n ? (typeof width === \"number\" ? `${width}px` : width) || height || \"100%\"\n : height;\n\n const style = {\n width: computedWidth,\n height: computedHeight,\n aspectRatio: variant === \"circle\" ? \"1 / 1\" : \"auto\",\n ...props.style,\n };\n\n return (\n <Element\n as=\"div\"\n data-skeleton\n ref={ref}\n classNames={classNames}\n style={style}\n role=\"progressbar\"\n aria-busy=\"true\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuetext={effectiveLabel}\n aria-label={effectiveLabel}\n {...props}\n />\n );\n});\nSkeleton.displayName = \"Skeleton\";\n\nexport const SkeletonGroup = React.forwardRef((\n {\n effect = \"wave\",\n spacing = \"small\",\n animate = true,\n repeat = 1,\n direction = \"vertical\",\n children,\n classNames = [],\n loadingLabel = \"Loading content...\",\n ...props\n }: SkeletonGroupProps, ref: React.Ref<SkeletonElementType>) => {\n\n const groupClassNames = [\n `direction-${direction}`,\n effect && `effect-${effect}`,\n ...classNames,\n ];\n\n if (spacing) {\n groupClassNames.push(`spacing-${spacing}`);\n }\n\n return (\n <SkeletonContext.Provider value={{ effect, animate, loadingLabel }}>\n <Element\n as=\"div\"\n ref={ref}\n data-skeleton-group\n classNames={groupClassNames}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n {...props}\n >\n {Array(repeat).fill(children).map((child, index) => (\n React.cloneElement(child as React.ReactElement, {\n key: index\n })\n ))}\n </Element>\n </SkeletonContext.Provider>\n );\n});\nSkeletonGroup.displayName = \"SkeletonGroup\";\n"],"names":["SkeletonContext","createContext","Skeleton","React","variant","width","height","shape","localEffect","loadingLabel","props","ref","groupContext","useContext","effectiveEffect","effectiveLabel","classNames","computedWidth","computedHeight","style","jsx","Element","SkeletonGroup","effect","spacing","animate","repeat","direction","children","groupClassNames","child","index"],"mappings":";;;;AAmBA,MAAMA,IAAkBC,EAAmC;AAAA,EACvD,QAAY;AAAA,EACZ,SAAY;AAChB,CAAC,GA0BYC,IAAWC,EAAM,WAAW,CACrC;AAAA,EACI,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAQC;AAAA,EACR,cAAAC;AAAA,EACA,GAAGC;AACP,GAAkBC,MAAwC;AAE1D,QAAMC,IAAeC,EAAWb,CAAe,GAEzCc,IAAkBN,KAAeI,EAAa,QAC9CG,IAAiBN,KAAgBG,EAAa,gBAAgB;AAEpE,MAAII,IAAa,CAAA;AAEjB,EAAIZ,KACAY,EAAW,KAAK,WAAWZ,CAAO,EAAE,GAGpCG,KACAS,EAAW,KAAK,SAAST,CAAK,EAAE,GAGhCO,KACAE,EAAW,KAAK,UAAUF,CAAe,EAAE;AAI/C,QAAMG,IAAgBZ,KAAS,QACzBa,IAAiBd,MAAY,YAC5B,OAAOC,KAAU,WAAW,GAAGA,CAAK,OAAOA,MAAUC,KAAU,SAChEA,GAEAa,IAAQ;AAAA,IACV,OAAOF;AAAA,IACP,QAAQC;AAAA,IACR,aAAad,MAAY,WAAW,UAAU;AAAA,IAC9C,GAAGM,EAAM;AAAA,EAAA;AAGb,SACI,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,iBAAa;AAAA,MACb,KAAAV;AAAA,MACA,YAAAK;AAAA,MACA,OAAAG;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,kBAAgBJ;AAAA,MAChB,cAAYA;AAAA,MACX,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGhB,CAAC;AACDR,EAAS,cAAc;AAEhB,MAAMoB,IAAgBnB,EAAM,WAAW,CAC1C;AAAA,EACI,QAAAoB,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,YAAAZ,IAAa,CAAA;AAAA,EACb,cAAAP,IAAe;AAAA,EACf,GAAGC;AACP,GAAuBC,MAAwC;AAE/D,QAAMkB,IAAkB;AAAA,IACpB,aAAaF,CAAS;AAAA,IACtBJ,KAAU,UAAUA,CAAM;AAAA,IAC1B,GAAGP;AAAA,EAAA;AAGP,SAAIQ,KACAK,EAAgB,KAAK,WAAWL,CAAO,EAAE,GAIzC,gBAAAJ,EAACpB,EAAgB,UAAhB,EAAyB,OAAO,EAAE,QAAAuB,GAAQ,SAAAE,GAAS,cAAAhB,KAChD,UAAA,gBAAAW;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,KAAAV;AAAA,MACA,uBAAmB;AAAA,MACnB,YAAYkB;AAAA,MACZ,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYpB;AAAA,MACX,GAAGC;AAAA,MAEH,UAAA,MAAMgB,CAAM,EAAE,KAAKE,CAAQ,EAAE,IAAI,CAACE,GAAOC,MACtC5B,EAAM,aAAa2B,GAA6B;AAAA,QAC5C,KAAKC;AAAA,MAAA,CACR,CACJ;AAAA,IAAA;AAAA,EAAA,GAET;AAER,CAAC;AACDT,EAAc,cAAc;"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { jsx as o } from "react/jsx-runtime";
3
+ import m from "react";
4
+ /* empty css */
5
+ import { Element as s } from "../Element/Element.js";
6
+ const p = m.forwardRef(
7
+ ({
8
+ size: r = "medium",
9
+ loadingText: a = "Loading...",
10
+ ...i
11
+ }, t) => {
12
+ let e = [];
13
+ return r && e.push(`size-${r}`), /* @__PURE__ */ o(
14
+ s,
15
+ {
16
+ as: "div",
17
+ "data-spinner": !0,
18
+ ref: t,
19
+ classNames: e,
20
+ role: "status",
21
+ "aria-busy": "true",
22
+ "aria-live": "polite",
23
+ "aria-label": a,
24
+ ...i
25
+ }
26
+ );
27
+ }
28
+ );
29
+ p.displayName = "Spinner";
30
+ export {
31
+ p as Spinner
32
+ };
33
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./spinner.css\";\n\n// prettier-ignore\nexport interface SpinnerCustomProps {\n size ? : \"tiny\" | \"small\" | \"medium\" | \"large\" | \"huge\";\n loadingText ? : string;\n // Custom loading message for screen readers\n}\n\nexport type SpinnerElementType = HTMLDivElement;\nexport type SpinnerProps = Omit<CommonAndHTMLProps<SpinnerElementType>, keyof SpinnerCustomProps> & SpinnerCustomProps;\n\n// COMPONENT //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Spinner = React.forwardRef((\n {\n size = \"medium\",\n loadingText = \"Loading...\",\n ...props\n }: SpinnerProps,\n ref: React.Ref<SpinnerElementType>,\n ) => {\n let classNames = [];\n\n if (size) {\n classNames.push(`size-${size}`);\n }\n\n return (\n <Element<SpinnerElementType>\n as=\"div\"\n data-spinner\n ref={ref}\n classNames={classNames}\n role=\"status\"\n aria-busy=\"true\"\n aria-live=\"polite\"\n aria-label={loadingText}\n {...props}\n />\n );\n },\n);\nSpinner.displayName = \"Spinner\";\n"],"names":["Spinner","React","size","loadingText","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAUC,EAAM;AAAA,EAAW,CAChC;AAAA,IACI,MAAAC,IAAO;AAAA,IACP,aAAAC,IAAc;AAAA,IACd,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,QAAIC,IAAa,CAAA;AAEjB,WAAIJ,KACAI,EAAW,KAAK,QAAQJ,CAAI,EAAE,GAI9B,gBAAAK;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,gBAAY;AAAA,QACZ,KAAAH;AAAA,QACA,YAAAC;AAAA,QACA,MAAK;AAAA,QACL,aAAU;AAAA,QACV,aAAU;AAAA,QACV,cAAYH;AAAA,QACX,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAJ,EAAQ,cAAc;"}
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { jsxs as C, jsx as w } from "react/jsx-runtime";
3
+ import t from "react";
4
+ /* empty css */
5
+ import { Element as b } from "../Element/Element.js";
6
+ const v = t.forwardRef(
7
+ ({
8
+ bordersFor: e,
9
+ isStriped: a,
10
+ highlightRowOnHover: u,
11
+ isFullWidth: f,
12
+ alignText: i,
13
+ caption: n,
14
+ summary: p,
15
+ hasColSpan: d,
16
+ children: r,
17
+ ...m
18
+ }, c) => {
19
+ let o = [];
20
+ e && o.push(`bordered-${e}`), a && o.push("striped"), u && o.push("hoverable"), f && o.push("full-width"), i && o.push(`align-text-${i}`);
21
+ const h = t.Children.count(r);
22
+ return /* @__PURE__ */ C(
23
+ b,
24
+ {
25
+ as: "table",
26
+ classNames: o,
27
+ ref: c,
28
+ role: "table",
29
+ "aria-rowcount": h || void 0,
30
+ "aria-colcount": d ? void 0 : (() => {
31
+ if (!r || !t.isValidElement(r)) return;
32
+ const s = t.Children.toArray(r)[0];
33
+ if (t.isValidElement(s)) {
34
+ const l = s.props;
35
+ if (l.children)
36
+ return t.Children.count(l.children);
37
+ }
38
+ })(),
39
+ summary: p,
40
+ ...m,
41
+ children: [
42
+ n && /* @__PURE__ */ w("caption", { children: n }),
43
+ r
44
+ ]
45
+ }
46
+ );
47
+ }
48
+ );
49
+ v.displayName = "Table";
50
+ export {
51
+ v as Table
52
+ };
53
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["// FRAMEWORK ===========================================================================================================\nimport React from \"react\";\n\n// FICTOAN =============================================================================================================\nimport { Element } from \"../Element\";\n\n// STYLES ==============================================================================================================\nimport \"./table.css\";\n\n// TYPES ===============================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\n\n// prettier-ignore\nexport interface TableCustomProps {\n bordersFor ? : \"rows\" | \"columns\" | \"both\";\n alignText ? : \"left\" | \"right\" | \"centre\" | \"center\";\n isStriped ? : boolean;\n highlightRowOnHover ? : boolean;\n isFullWidth ? : boolean;\n caption ? : string; // Accessible table caption\n summary ? : string; // Description of table structure for complex tables\n hasColSpan ? : boolean; // Indicates if table has colspan/rowspan for screen readers\n}\n\nexport type TableElementType = HTMLTableElement;\nexport type TableProps = Omit<CommonAndHTMLProps<TableElementType>, keyof TableCustomProps> & TableCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Table = React.forwardRef(\n (\n {\n bordersFor,\n isStriped,\n highlightRowOnHover,\n isFullWidth,\n alignText,\n caption,\n summary,\n hasColSpan,\n children,\n ...props\n }: TableProps,\n ref: React.Ref<TableElementType>\n ) => {\n let classNames = [];\n\n if (bordersFor) {\n classNames.push(`bordered-${bordersFor}`);\n }\n\n if (isStriped) {\n classNames.push(\"striped\");\n }\n\n if (highlightRowOnHover) {\n classNames.push(\"hoverable\");\n }\n\n if (isFullWidth) {\n classNames.push(\"full-width\");\n }\n\n if (alignText) {\n classNames.push(`align-text-${alignText}`);\n }\n\n // Get row count if children exist\n const rowCount = React.Children.count(children);\n\n // Get column count from first row if possible\n const getColumnCount = () => {\n if (!children || !React.isValidElement(children)) return undefined;\n\n const firstRow = React.Children.toArray(children)[0];\n if (React.isValidElement(firstRow)) {\n const rowProps = firstRow.props as { children?: React.ReactNode };\n if (rowProps.children) {\n return React.Children.count(rowProps.children);\n }\n }\n return undefined;\n };\n\n return (\n <Element<TableElementType>\n as=\"table\"\n classNames={classNames}\n ref={ref}\n role=\"table\"\n aria-rowcount={rowCount || undefined}\n aria-colcount={hasColSpan ? undefined : getColumnCount()}\n summary={summary}\n {...props}\n >\n {caption && <caption>{caption}</caption>}\n {children}\n </Element>\n );\n }\n);\nTable.displayName = \"Table\";\n"],"names":["Table","React","bordersFor","isStriped","highlightRowOnHover","isFullWidth","alignText","caption","summary","hasColSpan","children","props","ref","classNames","rowCount","jsxs","Element","firstRow","rowProps","jsx"],"mappings":";;;;AA4BO,MAAMA,IAAQC,EAAM;AAAA,EACvB,CACI;AAAA,IACI,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,QAAIC,IAAa,CAAA;AAEjB,IAAIX,KACAW,EAAW,KAAK,YAAYX,CAAU,EAAE,GAGxCC,KACAU,EAAW,KAAK,SAAS,GAGzBT,KACAS,EAAW,KAAK,WAAW,GAG3BR,KACAQ,EAAW,KAAK,YAAY,GAG5BP,KACAO,EAAW,KAAK,cAAcP,CAAS,EAAE;AAI7C,UAAMQ,IAAWb,EAAM,SAAS,MAAMS,CAAQ;AAgB9C,WACI,gBAAAK;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,YAAAH;AAAA,QACA,KAAAD;AAAA,QACA,MAAK;AAAA,QACL,iBAAeE,KAAY;AAAA,QAC3B,iBAAeL,IAAa,UApBb,MAAM;AACzB,cAAI,CAACC,KAAY,CAACT,EAAM,eAAeS,CAAQ,EAAG;AAElD,gBAAMO,IAAWhB,EAAM,SAAS,QAAQS,CAAQ,EAAE,CAAC;AACnD,cAAIT,EAAM,eAAegB,CAAQ,GAAG;AAChC,kBAAMC,IAAWD,EAAS;AAC1B,gBAAIC,EAAS;AACT,qBAAOjB,EAAM,SAAS,MAAMiB,EAAS,QAAQ;AAAA,UAErD;AAAA,QAEJ,GASgD;AAAA,QACxC,SAAAV;AAAA,QACC,GAAGG;AAAA,QAEH,UAAA;AAAA,UAAAJ,KAAW,gBAAAY,EAAC,aAAS,UAAAZ,EAAA,CAAQ;AAAA,UAC7BG;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAV,EAAM,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,YAAY,CAAC;AAMpB,UAAU,OAAO;IACT,GAAG,EAAU,MAAM,CAAC;IACpB,KAAK,EAAQ,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAM,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAS,CAAC,EAAG,OAAO,CAAC;CAC5B;AAGD,MAAM,WAAW,eAAe;IACxB,IAAI,EAA4B,OAAO,EAAE,CAAC;IAC1C,2BAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,gBAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,KAA4B,CAAC,EAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,WAA4B,CAAC,EAAG,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,eAAe,CAAC,GAAG,eAAe,CAAC;AAE3G,eAAO,MAAM,IAAI,0JAmIhB,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,YAAY,CAAC;AAMpB,UAAU,OAAO;IACT,GAAG,EAAU,MAAM,CAAC;IACpB,KAAK,EAAQ,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAM,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAS,CAAC,EAAG,OAAO,CAAC;CAC5B;AAGD,MAAM,WAAW,eAAe;IACxB,IAAI,EAA4B,OAAO,EAAE,CAAC;IAC1C,2BAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,gBAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,KAA4B,CAAC,EAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,WAA4B,CAAC,EAAG,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,eAAe,CAAC,GAAG,eAAe,CAAC;AAE3G,eAAO,MAAM,IAAI,0JAkIhB,CAAC"}
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { jsxs as u, jsx as r } from "react/jsx-runtime";
3
+ import d, { useRef as R, useCallback as h, useEffect as T } from "react";
4
+ import { Nav as I, Div as S } from "../Element/Tags.js";
5
+ /* empty css */
6
+ import { Divider as v } from "../Divider/Divider.js";
7
+ import { Text as B } from "../Typography/Text.js";
8
+ import { Element as g } from "../Element/Element.js";
9
+ const C = d.forwardRef(
10
+ ({ tabs: l, additionalNavContentWrapper: p, defaultActiveTab: x, align: E = "left", isFullWidth: $, ...w }, N) => {
11
+ const y = l.findIndex((e) => e.key === x), a = y > -1 ? y : 0, [t, o] = d.useState(
12
+ l.length > 0 ? l[a] : void 0
13
+ ), [A, k] = d.useState(!1), f = R([]), s = h((e) => {
14
+ (t == null ? void 0 : t.key) !== e.key && (k(!0), setTimeout(() => {
15
+ o(e), k(!1);
16
+ }, 150));
17
+ }, [t == null ? void 0 : t.key]);
18
+ T(() => {
19
+ l.length > 0 ? l.find((i) => i.key === (t == null ? void 0 : t.key)) || o(l[a]) : o(void 0);
20
+ }, [l, a, t == null ? void 0 : t.key]);
21
+ const D = h((e, i) => {
22
+ var m;
23
+ let n = i;
24
+ if (e.key === "ArrowRight")
25
+ n = (i + 1) % l.length;
26
+ else if (e.key === "ArrowLeft")
27
+ n = (i - 1 + l.length) % l.length;
28
+ else if (e.key === "Home")
29
+ n = 0;
30
+ else if (e.key === "End")
31
+ n = l.length - 1;
32
+ else
33
+ return;
34
+ e.preventDefault();
35
+ const c = l[n];
36
+ c && (s(c), (m = f.current[n]) == null || m.focus());
37
+ }, [l, s]);
38
+ return t ? /* @__PURE__ */ u(
39
+ g,
40
+ {
41
+ as: "div",
42
+ "data-tabs": !0,
43
+ ref: N,
44
+ "data-align": E,
45
+ "data-full-width": $,
46
+ ...w,
47
+ children: [
48
+ /* @__PURE__ */ r(I, { "data-tabs-nav": !0, role: "tablist", "aria-label": "Tab Navigation", children: /* @__PURE__ */ u("ul", { className: "tab-labels-list", children: [
49
+ l.map((e, i) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ r(
50
+ g,
51
+ {
52
+ as: "button",
53
+ ref: (n) => {
54
+ f.current[i] = n;
55
+ },
56
+ id: `tab-${e.key}`,
57
+ role: "tab",
58
+ "aria-selected": t.key === e.key,
59
+ "aria-controls": `tab-panel-${e.key}`,
60
+ tabIndex: t.key === e.key ? 0 : -1,
61
+ "data-tab-label": !0,
62
+ "data-active": t.key === e.key,
63
+ "data-alert": e.hasAlert,
64
+ onClick: () => s(e),
65
+ onKeyDown: (n) => D(n, i),
66
+ className: `tab-button ${t.key === e.key ? "is-active" : ""}`,
67
+ marginBottom: "nano",
68
+ children: /* @__PURE__ */ r(
69
+ B,
70
+ {
71
+ className: `tab-label ${t.key === e.key ? "is-active" : ""} ${e.hasAlert ? "has-alert" : ""}`,
72
+ children: e.label
73
+ }
74
+ )
75
+ }
76
+ ) }, e.key)),
77
+ p
78
+ ] }) }),
79
+ /* @__PURE__ */ r(v, { kind: "tertiary", marginTop: "none", marginBottom: "micro" }),
80
+ l.map((e) => /* @__PURE__ */ r(
81
+ S,
82
+ {
83
+ id: `tab-panel-${e.key}`,
84
+ role: "tabpanel",
85
+ "aria-labelledby": `tab-${e.key}`,
86
+ tabIndex: t.key === e.key ? 0 : -1,
87
+ "data-tab-content": !0,
88
+ "data-active": t.key === e.key,
89
+ "data-exiting": t.key === e.key && A,
90
+ hidden: t.key !== e.key,
91
+ children: e.content
92
+ },
93
+ e.key
94
+ ))
95
+ ]
96
+ }
97
+ ) : null;
98
+ }
99
+ );
100
+ C.displayName = "Tabs";
101
+ export {
102
+ C as Tabs
103
+ };
104
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useEffect, useCallback, useRef } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Div, Nav } from \"../Element/Tags\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./tabs.css\";\n\n// OTHER ===============================================================================================================\nimport { Divider } from \"../Divider/Divider\";\nimport { Text } from \"../Typography/Text\";\n\ninterface TabType {\n key : string;\n label : React.ReactNode;\n content : React.ReactNode;\n hasAlert ? : boolean;\n}\n\n// prettier-ignore\nexport interface TabsCustomProps {\n tabs : TabType[];\n additionalNavContentWrapper ? : React.ReactNode;\n defaultActiveTab ? : React.ReactNode;\n align ? : \"left\" | \"centre\" | \"center\" | \"right\";\n isFullWidth ? : boolean;\n}\n\nexport type TabsElementType = HTMLDivElement;\nexport type TabsProps = Omit<CommonAndHTMLProps<TabsElementType>, keyof TabsCustomProps> & TabsCustomProps;\n\nexport const Tabs = React.forwardRef(\n (\n {tabs, additionalNavContentWrapper, defaultActiveTab, align = \"left\", isFullWidth, ...props} : TabsProps,\n ref : React.Ref<TabsElementType>) => {\n const index = tabs.findIndex((tab) => tab.key === defaultActiveTab);\n const defaultTabIndex = index > -1 ? index : 0;\n const [ activeTab, setActiveTab ] = React.useState<TabType | undefined>(\n tabs.length > 0 ? tabs[defaultTabIndex] : undefined,\n );\n const [ isExiting, setIsExiting ] = React.useState<boolean>(false);\n\n // Refs for keyboard navigation to focus the tab buttons\n const tabButtonRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // V2's performant animation logic\n const handleTabChange = useCallback((tab : TabType) => {\n if (activeTab?.key !== tab.key) {\n setIsExiting(true);\n setTimeout(() => {\n setActiveTab(tab);\n setIsExiting(false);\n }, 150); // Animation duration\n }\n }, [ activeTab?.key ]);\n\n useEffect(() => {\n if (tabs.length > 0) {\n // If the current active tab still exists in the new tabs array, keep it.\n // This preserves the active state if the content of a tab changes.\n const currentTabStillExists = tabs.find(tab => tab.key === activeTab?.key);\n if (!currentTabStillExists) {\n // Otherwise, default to the designated default tab or the first one.\n setActiveTab(tabs[defaultTabIndex]);\n }\n } else {\n setActiveTab(undefined);\n }\n }, [ tabs, defaultTabIndex, activeTab?.key ]);\n\n\n const handleKeyDown = useCallback((event : React.KeyboardEvent, currentIndex : number) => {\n let nextIndex = currentIndex;\n\n if (event.key === \"ArrowRight\") {\n nextIndex = (currentIndex + 1) % tabs.length;\n } else if (event.key === \"ArrowLeft\") {\n nextIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n } else if (event.key === \"Home\") {\n nextIndex = 0;\n } else if (event.key === \"End\") {\n nextIndex = tabs.length - 1;\n } else {\n // Exit if it's not a navigation key\n return;\n }\n\n event.preventDefault();\n const nextTab = tabs[nextIndex];\n if (nextTab) {\n handleTabChange(nextTab);\n tabButtonRefs.current[nextIndex]?.focus();\n }\n\n }, [ tabs, handleTabChange ]);\n\n if (!activeTab) {\n return null; // Render nothing if there are no tabs or no active tab\n }\n\n return (\n <Element<TabsElementType>\n as=\"div\"\n data-tabs\n ref={ref}\n data-align={align}\n data-full-width={isFullWidth}\n {...props}\n >\n <Nav data-tabs-nav role=\"tablist\" aria-label=\"Tab Navigation\">\n <ul className=\"tab-labels-list\">\n {tabs.map((tab, i) => (\n <li key={tab.key}>\n <Element<HTMLButtonElement>\n as=\"button\"\n ref={(el) => { tabButtonRefs.current[i] = el; }}\n id={`tab-${tab.key}`}\n role=\"tab\"\n aria-selected={activeTab.key === tab.key}\n aria-controls={`tab-panel-${tab.key}`}\n tabIndex={activeTab.key === tab.key ? 0 : -1} // Roaming tabindex\n data-tab-label\n data-active={activeTab.key === tab.key}\n data-alert={tab.hasAlert}\n onClick={() => handleTabChange(tab)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n className={`tab-button ${activeTab.key === tab.key ? \"is-active\" : \"\"}`}\n marginBottom=\"nano\"\n >\n <Text\n className={`tab-label ${activeTab.key === tab.key ? \"is-active\" : \"\"} ${tab.hasAlert ? \"has-alert\" : \"\"}`}\n >\n {tab.label}\n </Text>\n </Element>\n </li>\n ))}\n {additionalNavContentWrapper}\n </ul>\n </Nav>\n\n <Divider kind=\"tertiary\" marginTop=\"none\" marginBottom=\"micro\" />\n\n {tabs.map((tab) => (\n <Div\n key={tab.key}\n id={`tab-panel-${tab.key}`}\n role=\"tabpanel\"\n aria-labelledby={`tab-${tab.key}`}\n tabIndex={activeTab.key === tab.key ? 0 : -1}\n data-tab-content\n data-active={activeTab.key === tab.key}\n data-exiting={activeTab.key === tab.key && isExiting}\n hidden={activeTab.key !== tab.key}\n >\n {tab.content}\n </Div>\n ))}\n </Element>\n );\n },\n);\nTabs.displayName = \"Tabs\";"],"names":["Tabs","React","tabs","additionalNavContentWrapper","defaultActiveTab","align","isFullWidth","props","ref","index","tab","defaultTabIndex","activeTab","setActiveTab","isExiting","setIsExiting","tabButtonRefs","useRef","handleTabChange","useCallback","useEffect","handleKeyDown","event","currentIndex","nextIndex","nextTab","_a","jsxs","Element","jsx","Nav","el","e","Text","Divider","Div"],"mappings":"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"}
@@ -7,6 +7,12 @@ export type ThemeProviderElementType = HTMLDivElement;
7
7
  export interface ThemeProviderProps extends CommonAndHTMLProps<ThemeProviderElementType> {
8
8
  themeList: string[];
9
9
  currentTheme: string;
10
+ /** localStorage key the theme is persisted under. Defaults to "fictoan-theme"; pass a unique
11
+ * value (your package.json name works well) when multiple Fictoan apps can share an origin
12
+ * (e.g. localhost during dev, GitHub Pages) so their themes don't collide. */
13
+ storageKey?: string;
14
+ /** Pass your CSP nonce so the no-flash inline script is allowed under a strict `script-src`. */
15
+ nonce?: string;
10
16
  }
11
17
  export declare const ThemeProvider: React.ForwardRefExoticComponent<ThemeProviderProps & React.RefAttributes<HTMLDivElement>>;
12
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAqB1D,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAK/E,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACtD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,CAAC,wBAAwB,CAAC;IACpF,SAAS,EAAM,MAAM,EAAE,CAAC;IACxB,YAAY,EAAG,MAAM,CAAC;CACzB;AAaD,eAAO,MAAM,aAAa,2FAuDzB,CAAC"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAK/E,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACtD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,CAAC,wBAAwB,CAAC;IACpF,SAAS,EAAM,MAAM,EAAE,CAAC;IACxB,YAAY,EAAG,MAAM,CAAC;IACtB;;mFAE+E;IAC/E,UAAW,CAAC,EAAG,MAAM,CAAC;IACtB,gGAAgG;IAChG,KAAW,CAAC,EAAG,MAAM,CAAC;CACzB;AAaD,eAAO,MAAM,aAAa,2FAqFzB,CAAC"}