@vritti/quantum-ui 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/Avatar.js +5 -5
  2. package/dist/Checkbox.js +16 -11
  3. package/dist/Checkbox.js.map +1 -1
  4. package/dist/Checkbox2.js +4 -5
  5. package/dist/Checkbox2.js.map +1 -1
  6. package/dist/Combination.js +1 -1
  7. package/dist/Dialog.js +1 -1
  8. package/dist/Progress.js +2 -2
  9. package/dist/RadioGroup.js +4 -5
  10. package/dist/RadioGroup.js.map +1 -1
  11. package/dist/Sidebar.js +1 -1
  12. package/dist/Sonner.js +1 -1
  13. package/dist/Switch.js +19 -14
  14. package/dist/Switch.js.map +1 -1
  15. package/dist/TabsSkeleton.js +1 -1
  16. package/dist/Toggle.js +1 -1
  17. package/dist/assets/quantum-ui.css +1 -1
  18. package/dist/components/RichTextEditor.js +1 -1
  19. package/dist/components/TreeView.js +2 -3
  20. package/dist/components/TreeView.js.map +1 -1
  21. package/dist/disabledTip.js +13 -0
  22. package/dist/disabledTip.js.map +1 -0
  23. package/dist/dropdown-menu.js +5 -7
  24. package/dist/dropdown-menu.js.map +1 -1
  25. package/dist/image-component.js +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index13.js +4 -6
  28. package/dist/index13.js.map +1 -1
  29. package/dist/index14.js +3 -5
  30. package/dist/index14.js.map +1 -1
  31. package/dist/index15.js +8 -9
  32. package/dist/index15.js.map +1 -1
  33. package/dist/index16.js +1 -1
  34. package/dist/index17.js +1 -1
  35. package/dist/index19.js +2 -4
  36. package/dist/index19.js.map +1 -1
  37. package/dist/index20.js +1 -1
  38. package/dist/index21.js +139 -1
  39. package/dist/index21.js.map +1 -1
  40. package/dist/index22.js +3 -4
  41. package/dist/index22.js.map +1 -1
  42. package/dist/index23.js +70 -122
  43. package/dist/index23.js.map +1 -1
  44. package/dist/index24.js +1128 -70
  45. package/dist/index24.js.map +1 -1
  46. package/dist/index25.js +231 -11
  47. package/dist/index25.js.map +1 -1
  48. package/dist/index26.js +2509 -1106
  49. package/dist/index26.js.map +1 -1
  50. package/dist/index27.js +23 -223
  51. package/dist/index27.js.map +1 -1
  52. package/dist/index28.js +3 -2535
  53. package/dist/index28.js.map +1 -1
  54. package/dist/index29.js +36 -31
  55. package/dist/index29.js.map +1 -1
  56. package/dist/index30.js +308 -3
  57. package/dist/index30.js.map +1 -1
  58. package/dist/index31.js +8 -36
  59. package/dist/index31.js.map +1 -1
  60. package/dist/index32.js +25 -305
  61. package/dist/index32.js.map +1 -1
  62. package/dist/index33.js +60 -8
  63. package/dist/index33.js.map +1 -1
  64. package/dist/index34.js +11 -30
  65. package/dist/index34.js.map +1 -1
  66. package/dist/index35.js +35 -59
  67. package/dist/index35.js.map +1 -1
  68. package/dist/index36.js +35348 -9
  69. package/dist/index36.js.map +1 -1
  70. package/dist/index37.js +79 -36
  71. package/dist/index37.js.map +1 -1
  72. package/dist/index38.js +184 -35341
  73. package/dist/index38.js.map +1 -1
  74. package/dist/index5.js +2 -4
  75. package/dist/index5.js.map +1 -1
  76. package/dist/lib/components/Checkbox/Checkbox.d.ts +1 -0
  77. package/dist/lib/components/Checkbox/Checkbox.d.ts.map +1 -1
  78. package/dist/lib/components/Switch/Switch.d.ts +4 -1
  79. package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
  80. package/dist/lib/selects/permission-group/PermissionGroupSelector.d.ts +4 -0
  81. package/dist/lib/selects/permission-group/PermissionGroupSelector.d.ts.map +1 -0
  82. package/dist/lib/selects/permission-group/index.d.ts +2 -0
  83. package/dist/lib/selects/permission-group/index.d.ts.map +1 -0
  84. package/dist/lib/types/catalog-resolver.d.ts +19 -7
  85. package/dist/lib/types/catalog-resolver.d.ts.map +1 -1
  86. package/dist/lib/utils/disabledTip.d.ts +3 -0
  87. package/dist/lib/utils/disabledTip.d.ts.map +1 -0
  88. package/dist/selects/permission-group.js +21 -0
  89. package/dist/selects/permission-group.js.map +1 -0
  90. package/dist/types/catalog-resolver.js +1 -1
  91. package/dist/types/catalog-resolver.js.map +1 -1
  92. package/dist/utils/motion.js +2 -2
  93. package/dist/value.js +1 -1
  94. package/package.json +5 -1
  95. package/dist/index39.js +0 -84
  96. package/dist/index39.js.map +0 -1
  97. package/dist/index40.js +0 -199
  98. package/dist/index40.js.map +0 -1
package/dist/index5.js CHANGED
@@ -1,10 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index20.js';
3
- import { c as createContextScope } from './index21.js';
4
- import { u as useLayoutEffect2 } from './index30.js';
3
+ import { u as useId, P as Presence, c as createContextScope } from './index21.js';
4
+ import { u as useLayoutEffect2 } from './index28.js';
5
5
  import { u as useComposedRefs } from './index12.js';
6
- import { P as Presence } from './index23.js';
7
- import { u as useId } from './index25.js';
8
6
  import { jsx } from 'react/jsx-runtime';
9
7
 
10
8
  var COLLAPSIBLE_NAME = "Collapsible";
@@ -1 +1 @@
1
- {"version":3,"file":"index5.js","sources":["../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types_f33eb5e944edcffc4be9ac071951afef/node_modules/@radix-ui/react-collapsible/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef(void 0);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useLayoutEffect"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index5.js","sources":["../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types_f33eb5e944edcffc4be9ac071951afef/node_modules/@radix-ui/react-collapsible/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef(void 0);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useLayoutEffect"],"mappings":"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","x_google_ignoreList":[0]}
@@ -4,6 +4,7 @@ export interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof Sha
4
4
  label?: React.ReactNode;
5
5
  description?: React.ReactNode;
6
6
  error?: string;
7
+ disabledTip?: string;
7
8
  }
8
9
  export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
9
10
  //# sourceMappingURL=Checkbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../../lib/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAG5E,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC;IAC1F,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,QAAQ,yFAkCpB,CAAC"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../../lib/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAI5E,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC;IAC1F,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,QAAQ,yFAsCpB,CAAC"}
@@ -4,8 +4,11 @@ export interface SwitchProps extends React.ComponentPropsWithoutRef<typeof Shadc
4
4
  label?: React.ReactNode;
5
5
  description: React.ReactNode;
6
6
  error?: string;
7
+ disabledTip?: string;
7
8
  }
8
9
  export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
9
- export type CompactSwitchProps = React.ComponentProps<typeof ShadcnSwitch>;
10
+ export type CompactSwitchProps = React.ComponentProps<typeof ShadcnSwitch> & {
11
+ disabledTip?: string;
12
+ };
10
13
  export declare const CompactSwitch: React.FC<CompactSwitchProps>;
11
14
  //# sourceMappingURL=Switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../lib/components/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,YAAY,CAAC;IACtF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,MAAM,uFAoClB,CAAC;AAIF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAG3E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAEtD,CAAC"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../../lib/components/Switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGtE,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,YAAY,CAAC;IACtF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,MAAM,uFAwClB,CAAC;AAIF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAGtG,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CACgC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { SelectProps } from '../../components/Select/Select';
2
+ export type PermissionGroupSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;
3
+ export declare const PermissionGroupSelector: import('react').ForwardRefExoticComponent<PermissionGroupSelectorProps & import('react').RefAttributes<HTMLButtonElement>>;
4
+ //# sourceMappingURL=PermissionGroupSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionGroupSelector.d.ts","sourceRoot":"","sources":["../../../../lib/selects/permission-group/PermissionGroupSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAGhF,eAAO,MAAM,uBAAuB,4HAWlC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { PermissionGroupSelector, type PermissionGroupSelectorProps } from './PermissionGroupSelector';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/selects/permission-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -24,12 +24,19 @@ export interface PlatformDenyCodes {
24
24
  export type FeatureUnlocks = Record<string, PlatformCodes>;
25
25
  export type FeatureLocks = Record<string, PlatformDenyCodes>;
26
26
  export type SiteFeatureLocks = FeatureLocks;
27
+ export interface PermissionGroupRef {
28
+ code: string;
29
+ label: string;
30
+ sortOrder: number;
31
+ }
27
32
  export interface SnapshotPermission {
28
33
  code: string;
29
34
  label: string;
30
35
  isGlobal: boolean;
31
36
  businesses: string[];
32
37
  dependsOn: string[];
38
+ platforms: PlatformBucket[];
39
+ group?: string;
33
40
  }
34
41
  export interface SnapshotMicrofrontendWeb {
35
42
  code: string;
@@ -64,8 +71,9 @@ export interface SnapshotFeature {
64
71
  applicableSiteTypes: SiteType[];
65
72
  permissions: SnapshotPermission[];
66
73
  microfrontends: SnapshotMicrofrontends;
67
- requiredServices?: ServiceCode[];
68
- apiSurfaces?: ApiSurface[];
74
+ requiredServices: ServiceCode[];
75
+ permissionGroups: PermissionGroupRef[];
76
+ apiSurfaces: ApiSurface[];
69
77
  }
70
78
  export interface SnapshotAppFeatureRef {
71
79
  code: string;
@@ -106,17 +114,17 @@ export interface BusinessVocabulary {
106
114
  export interface SnapshotBusiness {
107
115
  name: string;
108
116
  vocabulary?: BusinessVocabulary;
109
- apps: SnapshotApp[];
110
117
  roleTemplates: Record<string, SnapshotRoleTemplate>;
111
118
  plans: Record<string, SnapshotPlan>;
112
119
  }
113
120
  export interface VersionSnapshot {
114
121
  schemaVersion?: number;
115
122
  features: Record<string, SnapshotFeature>;
123
+ apps: SnapshotApp[];
116
124
  businesses: Record<string, SnapshotBusiness>;
117
125
  }
118
126
  export declare function snapshotFeatureKey(code: string, scope: ScopeType): string;
119
- export declare const SNAPSHOT_SCHEMA_VERSION = 4;
127
+ export declare const SNAPSHOT_SCHEMA_VERSION = 6;
120
128
  export type LockReason = 'PLAN' | 'SITE' | 'SERVICE';
121
129
  export interface CatalogPermission {
122
130
  code: string;
@@ -162,6 +170,7 @@ export interface SiteMatrixPermission {
162
170
  code: string;
163
171
  label: string;
164
172
  dependsOn: string[];
173
+ group?: PermissionGroupRef;
165
174
  web: SiteMatrixCell | null;
166
175
  mobile: SiteMatrixCell | null;
167
176
  graphql: SiteMatrixCell | null;
@@ -176,15 +185,18 @@ export interface SiteMatrixFeature {
176
185
  platforms: PlatformBucket[];
177
186
  inPlan: boolean;
178
187
  availableIn: string[];
179
- apiSurfaces?: ApiSurface[];
188
+ apiSurfaces: ApiSurface[];
180
189
  permissions: SiteMatrixPermission[];
181
190
  }
191
+ export interface MatrixCounts {
192
+ unlocked: number;
193
+ total: number;
194
+ }
182
195
  export interface SiteMatrixApp {
183
196
  code: string;
184
197
  name: string;
185
198
  icon: string | null;
186
- unlockedCount: number;
187
- totalCount: number;
199
+ counts: Record<PlatformBucket, MatrixCounts>;
188
200
  features: SiteMatrixFeature[];
189
201
  }
190
202
  export interface SiteMatrix {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-resolver.d.ts","sourceRoot":"","sources":["../../../lib/types/catalog-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-resolver.d.ts","sourceRoot":"","sources":["../../../lib/types/catalog-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ export declare function withDisabledTip(control: React.ReactElement, tip: string | undefined, disabled: boolean | undefined): React.ReactElement;
3
+ //# sourceMappingURL=disabledTip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disabledTip.d.ts","sourceRoot":"","sources":["../../../lib/utils/disabledTip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,CAAC,YAAY,EAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAC5B,KAAK,CAAC,YAAY,CAcpB"}
@@ -0,0 +1,21 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { S as Select } from '../Select.js';
4
+
5
+ const PermissionGroupSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
6
+ Select,
7
+ {
8
+ ref,
9
+ label: "Group",
10
+ placeholder: "No group",
11
+ searchable: true,
12
+ clearable: true,
13
+ optionsEndpoint: "select-api/permission-groups",
14
+ fieldKeys: { valueKey: "id", labelKey: "label", descriptionKey: "code", additionalKeys: "code" },
15
+ ...props
16
+ }
17
+ ));
18
+ PermissionGroupSelector.displayName = "PermissionGroupSelector";
19
+
20
+ export { PermissionGroupSelector };
21
+ //# sourceMappingURL=permission-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-group.js","sources":["../../lib/selects/permission-group/PermissionGroupSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type PermissionGroupSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for a version's permission groups; scope with params={{ versionId }}.\nexport const PermissionGroupSelector = forwardRef<HTMLButtonElement, PermissionGroupSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Group\"\n placeholder=\"No group\"\n searchable\n clearable\n optionsEndpoint=\"select-api/permission-groups\"\n fieldKeys={{ valueKey: 'id', labelKey: 'label', descriptionKey: 'code', additionalKeys: 'code' }}\n {...props}\n />\n));\nPermissionGroupSelector.displayName = 'PermissionGroupSelector';\n"],"names":[],"mappings":";;;;AAMO,MAAM,uBAAA,GAA0B,UAAA,CAA4D,CAAC,KAAA,EAAO,GAAA,qBACzG,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAY,UAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAS,IAAA;AAAA,IACT,eAAA,EAAgB,8BAAA;AAAA,IAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,OAAA,EAAS,cAAA,EAAgB,MAAA,EAAQ,cAAA,EAAgB,MAAA,EAAO;AAAA,IAC9F,GAAG;AAAA;AACN,CACD;AACD,uBAAA,CAAwB,WAAA,GAAc,yBAAA;;;;"}
@@ -11,7 +11,7 @@ const SERVICE_CODES = ["GITEA"];
11
11
  function snapshotFeatureKey(code, scope) {
12
12
  return `${scope}.${code}`;
13
13
  }
14
- const SNAPSHOT_SCHEMA_VERSION = 4;
14
+ const SNAPSHOT_SCHEMA_VERSION = 6;
15
15
 
16
16
  export { API_BUCKETS, API_SURFACES, BUCKET_BY_SURFACE, PLATFORMS, SERVICE_CODES, SNAPSHOT_SCHEMA_VERSION, SURFACE_BY_BUCKET, UI_PLATFORMS, isApiBucket, snapshotFeatureKey };
17
17
  //# sourceMappingURL=catalog-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-resolver.js","sources":["../../lib/types/catalog-resolver.ts"],"sourcesContent":["// Frontend mirror of @vritti/api-sdk/catalog-resolver types — keep field-for-field in sync\n\n/**\n * The surfaces a permission can be granted on.\n *\n * `web` and `mobile` are UI buckets, reached by loading a microfrontend. `graphql` and `http` are\n * API surfaces a credential signs its own requests against — no microfrontend and no route, so a\n * headless feature is grantable there and nowhere else, and each surface is entitled independently.\n */\nexport type PlatformBucket = 'web' | 'mobile' | 'graphql' | 'http';\n\nexport const PLATFORMS: PlatformBucket[] = ['web', 'mobile', 'graphql', 'http'];\n\n/** Buckets that reach their feature through a microfrontend, and so require one to resolve. */\nexport type UiPlatformBucket = 'web' | 'mobile';\n\nexport const UI_PLATFORMS: UiPlatformBucket[] = ['web', 'mobile'];\n\n// The API surfaces an app credential can present — the values of core's `app_type` enum\nexport const API_SURFACES = ['GRAPHQL', 'HTTP'] as const;\nexport type ApiSurface = (typeof API_SURFACES)[number];\n\n/** Buckets that admit an API credential rather than a person — exactly one per surface. */\nexport type ApiBucket = Exclude<PlatformBucket, UiPlatformBucket>;\n\nexport const API_BUCKETS: ApiBucket[] = ['graphql', 'http'];\n\nexport const SURFACE_BY_BUCKET: Record<ApiBucket, ApiSurface> = { graphql: 'GRAPHQL', http: 'HTTP' };\nexport const BUCKET_BY_SURFACE: Record<ApiSurface, ApiBucket> = { GRAPHQL: 'graphql', HTTP: 'http' };\n\nexport function isApiBucket(bucket: PlatformBucket): bucket is ApiBucket {\n return bucket === 'graphql' || bucket === 'http';\n}\n\n// A legacy single `app` bucket may still occur in stored documents from before the split; it is\n// deliberately not part of these shapes — the server's resolvers honour it at read time only.\nexport interface PlatformCodes {\n web?: string[];\n mobile?: string[];\n graphql?: string[];\n http?: string[];\n}\n\nexport interface PlatformDenyCodes {\n web?: string[] | null;\n mobile?: string[] | null;\n graphql?: string[] | null;\n http?: string[] | null;\n}\n\nexport type FeatureUnlocks = Record<string, PlatformCodes>;\n\nexport type FeatureLocks = Record<string, PlatformDenyCodes>;\nexport type SiteFeatureLocks = FeatureLocks;\n\nexport interface SnapshotPermission {\n code: string;\n label: string;\n isGlobal: boolean;\n businesses: string[];\n dependsOn: string[];\n}\n\nexport interface SnapshotMicrofrontendWeb {\n code: string;\n name: string;\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontendMobile {\n code: string;\n name: string;\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontends {\n web?: SnapshotMicrofrontendWeb;\n mobile?: SnapshotMicrofrontendMobile;\n}\n\nexport type ScopeType = 'ORG' | 'LE' | 'SITE_GROUP' | 'SITE';\nexport type SiteType = 'OUTLET' | 'WAREHOUSE' | 'PRODUCTION';\nexport const SERVICE_CODES = ['GITEA'] as const;\nexport type ServiceCode = (typeof SERVICE_CODES)[number];\nexport interface SnapshotFeature {\n code: string;\n name: string;\n lucideIcon: string;\n sfSymbol: string;\n materialSymbol: string;\n scope: ScopeType;\n applicableSiteTypes: SiteType[];\n permissions: SnapshotPermission[];\n microfrontends: SnapshotMicrofrontends;\n requiredServices?: ServiceCode[];\n // Absent on pre-flag snapshots, which reads as \"reachable by any app credential\"\n apiSurfaces?: ApiSurface[];\n}\n\nexport interface SnapshotAppFeatureRef {\n code: string;\n scope: ScopeType;\n}\n\nexport interface SnapshotApp {\n code: string;\n name: string;\n icon: string;\n sortOrder: number;\n features: SnapshotAppFeatureRef[];\n}\n\nexport interface SnapshotRoleTemplate {\n name: string;\n code: string;\n scope: ScopeType;\n siteType: SiteType;\n features: FeatureUnlocks;\n}\n\nexport interface SnapshotPlan {\n code: string;\n name: string;\n isCustom: boolean;\n maxSites: number | null;\n unlockedPermissions: FeatureUnlocks;\n}\n\nexport interface VocabularyEntry {\n singular: string;\n plural: string;\n}\nexport interface BusinessVocabulary {\n site?: VocabularyEntry;\n siteGroup?: VocabularyEntry;\n outlet?: VocabularyEntry;\n warehouse?: VocabularyEntry;\n production?: VocabularyEntry;\n}\nexport interface SnapshotBusiness {\n name: string;\n vocabulary?: BusinessVocabulary;\n apps: SnapshotApp[];\n roleTemplates: Record<string, SnapshotRoleTemplate>;\n plans: Record<string, SnapshotPlan>;\n}\n\nexport interface VersionSnapshot {\n schemaVersion?: number;\n // Flat feature dictionary keyed by `${scope}.${code}` (see snapshotFeatureKey) — same-code features at different scopes stay distinct\n features: Record<string, SnapshotFeature>;\n businesses: Record<string, SnapshotBusiness>;\n}\n\n// Composite key for the snapshot feature dictionary — feature identity is (scope, code)\nexport function snapshotFeatureKey(code: string, scope: ScopeType): string {\n return `${scope}.${code}`;\n}\n\nexport const SNAPSHOT_SCHEMA_VERSION = 4;\n\nexport type LockReason = 'PLAN' | 'SITE' | 'SERVICE';\n\nexport interface CatalogPermission {\n code: string;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n}\n\nexport interface FeatureCatalogEntry {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n web: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n mobile: {\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n permissions: CatalogPermission[];\n}\n\nexport type RoleItem = SnapshotRoleTemplate;\n\nexport interface SiteMatrixCell {\n inPlan: boolean;\n selected: boolean;\n availableIn: string[];\n}\n\nexport interface SiteMatrixPermission {\n code: string;\n label: string;\n dependsOn: string[];\n web: SiteMatrixCell | null;\n mobile: SiteMatrixCell | null;\n graphql: SiteMatrixCell | null;\n http: SiteMatrixCell | null;\n}\n\nexport interface SiteMatrixFeature {\n code: string;\n name: string;\n icon: string | null;\n scope: ScopeType;\n applicableSiteTypes: SiteType[];\n platforms: PlatformBucket[];\n inPlan: boolean;\n availableIn: string[];\n // API surfaces the feature declares — lets the app-credential editor filter by credential type\n apiSurfaces?: ApiSurface[];\n permissions: SiteMatrixPermission[];\n}\n\nexport interface SiteMatrixApp {\n code: string;\n name: string;\n icon: string | null;\n unlockedCount: number;\n totalCount: number;\n features: SiteMatrixFeature[];\n}\n\nexport interface SiteMatrix {\n plan: { code: string; name: string };\n apps: SiteMatrixApp[];\n locks: SiteFeatureLocks;\n}\n\nexport type RevokedGrants = Record<string, PlatformDenyCodes>;\n\nexport type ClientPlatform = 'web' | 'ios' | 'android' | 'graphql' | 'http';\n\nexport interface LockedPermission {\n code: string;\n reason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n}\n\nexport interface PlanUpsell {\n plan: string;\n features: string[];\n}\n\nexport interface PermissionFeature {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n permissions: string[];\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n // Which declared services the org has not provisioned — empty unless lockReason is 'SERVICE'\n missingServices: ServiceCode[];\n lockedPermissions: LockedPermission[];\n upsell: PlanUpsell[];\n route: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n };\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n}\n\nexport interface ResolveUserFeaturesParams {\n snapshot: VersionSnapshot;\n businessCode: string;\n planCode: string | undefined;\n siteLocks: SiteFeatureLocks | undefined;\n roleFeatures: FeatureUnlocks;\n platform: ClientPlatform;\n}\n\nexport interface ComposeRoleGrantsParams {\n baseFeatures: FeatureUnlocks | undefined;\n additions: FeatureUnlocks;\n revoked: RevokedGrants | undefined;\n}\n"],"names":[],"mappings":"AAWO,MAAM,SAAA,GAA8B,CAAC,KAAA,EAAO,QAAA,EAAU,WAAW,MAAM;AAKvE,MAAM,YAAA,GAAmC,CAAC,KAAA,EAAO,QAAQ;AAGzD,MAAM,YAAA,GAAe,CAAC,SAAA,EAAW,MAAM;AAMvC,MAAM,WAAA,GAA2B,CAAC,SAAA,EAAW,MAAM;AAEnD,MAAM,iBAAA,GAAmD,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,MAAA;AACrF,MAAM,iBAAA,GAAmD,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,MAAA;AAErF,SAAS,YAAY,MAAA,EAA6C;AACvE,EAAA,OAAO,MAAA,KAAW,aAAa,MAAA,KAAW,MAAA;AAC5C;AAuDO,MAAM,aAAA,GAAgB,CAAC,OAAO;AAyE9B,SAAS,kBAAA,CAAmB,MAAc,KAAA,EAA0B;AACzE,EAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AACzB;AAEO,MAAM,uBAAA,GAA0B;;;;"}
1
+ {"version":3,"file":"catalog-resolver.js","sources":["../../lib/types/catalog-resolver.ts"],"sourcesContent":["// Frontend mirror of @vritti/api-sdk/catalog-resolver types — keep field-for-field in sync\n\n/**\n * The surfaces a permission can be granted on.\n *\n * `web` and `mobile` are UI buckets, reached by loading a microfrontend. `graphql` and `http` are\n * API surfaces a credential signs its own requests against — no microfrontend and no route, so a\n * headless feature is grantable there and nowhere else, and each surface is entitled independently.\n */\nexport type PlatformBucket = 'web' | 'mobile' | 'graphql' | 'http';\n\nexport const PLATFORMS: PlatformBucket[] = ['web', 'mobile', 'graphql', 'http'];\n\n/** Buckets that reach their feature through a microfrontend, and so require one to resolve. */\nexport type UiPlatformBucket = 'web' | 'mobile';\n\nexport const UI_PLATFORMS: UiPlatformBucket[] = ['web', 'mobile'];\n\n// The API surfaces an app credential can present — the values of core's `app_type` enum\nexport const API_SURFACES = ['GRAPHQL', 'HTTP'] as const;\nexport type ApiSurface = (typeof API_SURFACES)[number];\n\n/** Buckets that admit an API credential rather than a person — exactly one per surface. */\nexport type ApiBucket = Exclude<PlatformBucket, UiPlatformBucket>;\n\nexport const API_BUCKETS: ApiBucket[] = ['graphql', 'http'];\n\nexport const SURFACE_BY_BUCKET: Record<ApiBucket, ApiSurface> = { graphql: 'GRAPHQL', http: 'HTTP' };\nexport const BUCKET_BY_SURFACE: Record<ApiSurface, ApiBucket> = { GRAPHQL: 'graphql', HTTP: 'http' };\n\nexport function isApiBucket(bucket: PlatformBucket): bucket is ApiBucket {\n return bucket === 'graphql' || bucket === 'http';\n}\n\nexport interface PlatformCodes {\n web?: string[];\n mobile?: string[];\n graphql?: string[];\n http?: string[];\n}\n\nexport interface PlatformDenyCodes {\n web?: string[] | null;\n mobile?: string[] | null;\n graphql?: string[] | null;\n http?: string[] | null;\n}\n\nexport type FeatureUnlocks = Record<string, PlatformCodes>;\n\nexport type FeatureLocks = Record<string, PlatformDenyCodes>;\nexport type SiteFeatureLocks = FeatureLocks;\n\nexport interface PermissionGroupRef {\n code: string;\n label: string;\n sortOrder: number;\n}\n\nexport interface SnapshotPermission {\n code: string;\n label: string;\n isGlobal: boolean;\n businesses: string[];\n dependsOn: string[];\n platforms: PlatformBucket[];\n group?: string;\n}\n\nexport interface SnapshotMicrofrontendWeb {\n code: string;\n name: string;\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontendMobile {\n code: string;\n name: string;\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n}\n\nexport interface SnapshotMicrofrontends {\n web?: SnapshotMicrofrontendWeb;\n mobile?: SnapshotMicrofrontendMobile;\n}\n\nexport type ScopeType = 'ORG' | 'LE' | 'SITE_GROUP' | 'SITE';\nexport type SiteType = 'OUTLET' | 'WAREHOUSE' | 'PRODUCTION';\nexport const SERVICE_CODES = ['GITEA'] as const;\nexport type ServiceCode = (typeof SERVICE_CODES)[number];\nexport interface SnapshotFeature {\n code: string;\n name: string;\n lucideIcon: string;\n sfSymbol: string;\n materialSymbol: string;\n scope: ScopeType;\n applicableSiteTypes: SiteType[];\n permissions: SnapshotPermission[];\n microfrontends: SnapshotMicrofrontends;\n requiredServices: ServiceCode[];\n permissionGroups: PermissionGroupRef[];\n // Strict — it decides which of the `graphql`/`http` buckets the feature offers at all\n apiSurfaces: ApiSurface[];\n}\n\nexport interface SnapshotAppFeatureRef {\n code: string;\n scope: ScopeType;\n}\n\nexport interface SnapshotApp {\n code: string;\n name: string;\n icon: string;\n sortOrder: number;\n features: SnapshotAppFeatureRef[];\n}\n\nexport interface SnapshotRoleTemplate {\n name: string;\n code: string;\n scope: ScopeType;\n siteType: SiteType;\n features: FeatureUnlocks;\n}\n\nexport interface SnapshotPlan {\n code: string;\n name: string;\n isCustom: boolean;\n maxSites: number | null;\n unlockedPermissions: FeatureUnlocks;\n}\n\nexport interface VocabularyEntry {\n singular: string;\n plural: string;\n}\nexport interface BusinessVocabulary {\n site?: VocabularyEntry;\n siteGroup?: VocabularyEntry;\n outlet?: VocabularyEntry;\n warehouse?: VocabularyEntry;\n production?: VocabularyEntry;\n}\nexport interface SnapshotBusiness {\n name: string;\n vocabulary?: BusinessVocabulary;\n roleTemplates: Record<string, SnapshotRoleTemplate>;\n plans: Record<string, SnapshotPlan>;\n}\n\nexport interface VersionSnapshot {\n schemaVersion?: number;\n // Flat feature dictionary keyed by `${scope}.${code}` (see snapshotFeatureKey) — same-code features at different scopes stay distinct\n features: Record<string, SnapshotFeature>;\n apps: SnapshotApp[];\n businesses: Record<string, SnapshotBusiness>;\n}\n\n// Composite key for the snapshot feature dictionary — feature identity is (scope, code)\nexport function snapshotFeatureKey(code: string, scope: ScopeType): string {\n return `${scope}.${code}`;\n}\n\nexport const SNAPSHOT_SCHEMA_VERSION = 6;\n\nexport type LockReason = 'PLAN' | 'SITE' | 'SERVICE';\n\nexport interface CatalogPermission {\n code: string;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n}\n\nexport interface FeatureCatalogEntry {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n web: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n mobile: {\n remoteEntryAndroid: string;\n remoteEntryIos: string;\n exposedModule: string;\n routePrefix: string;\n } | null;\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n permissions: CatalogPermission[];\n}\n\nexport type RoleItem = SnapshotRoleTemplate;\n\nexport interface SiteMatrixCell {\n inPlan: boolean;\n selected: boolean;\n availableIn: string[];\n}\n\nexport interface SiteMatrixPermission {\n code: string;\n label: string;\n dependsOn: string[];\n group?: PermissionGroupRef;\n web: SiteMatrixCell | null;\n mobile: SiteMatrixCell | null;\n graphql: SiteMatrixCell | null;\n http: SiteMatrixCell | null;\n}\n\nexport interface SiteMatrixFeature {\n code: string;\n name: string;\n icon: string | null;\n scope: ScopeType;\n applicableSiteTypes: SiteType[];\n platforms: PlatformBucket[];\n inPlan: boolean;\n availableIn: string[];\n // API surfaces the feature declares — lets the app-credential editor filter by credential type\n apiSurfaces: ApiSurface[];\n permissions: SiteMatrixPermission[];\n}\n\nexport interface MatrixCounts {\n unlocked: number;\n total: number;\n}\n\nexport interface SiteMatrixApp {\n code: string;\n name: string;\n icon: string | null;\n counts: Record<PlatformBucket, MatrixCounts>;\n features: SiteMatrixFeature[];\n}\n\nexport interface SiteMatrix {\n plan: { code: string; name: string };\n apps: SiteMatrixApp[];\n locks: SiteFeatureLocks;\n}\n\nexport type RevokedGrants = Record<string, PlatformDenyCodes>;\n\nexport type ClientPlatform = 'web' | 'ios' | 'android' | 'graphql' | 'http';\n\nexport interface LockedPermission {\n code: string;\n reason: LockReason | null;\n unlockPlans: string[];\n missingServices: ServiceCode[];\n}\n\nexport interface PlanUpsell {\n plan: string;\n features: string[];\n}\n\nexport interface PermissionFeature {\n code: string;\n name: string;\n lucideIcon: string | null;\n sfSymbol: string;\n materialSymbol: string;\n permissions: string[];\n locked: boolean;\n lockReason: LockReason | null;\n unlockPlans: string[];\n // Which declared services the org has not provisioned — empty unless lockReason is 'SERVICE'\n missingServices: ServiceCode[];\n lockedPermissions: LockedPermission[];\n upsell: PlanUpsell[];\n route: {\n remoteEntry: string;\n exposedModule: string;\n routePrefix: string;\n };\n appCode: string;\n appName: string;\n appIcon: string | null;\n appSortOrder: number;\n}\n\nexport interface ResolveUserFeaturesParams {\n snapshot: VersionSnapshot;\n businessCode: string;\n planCode: string | undefined;\n siteLocks: SiteFeatureLocks | undefined;\n roleFeatures: FeatureUnlocks;\n platform: ClientPlatform;\n}\n\nexport interface ComposeRoleGrantsParams {\n baseFeatures: FeatureUnlocks | undefined;\n additions: FeatureUnlocks;\n revoked: RevokedGrants | undefined;\n}\n"],"names":[],"mappings":"AAWO,MAAM,SAAA,GAA8B,CAAC,KAAA,EAAO,QAAA,EAAU,WAAW,MAAM;AAKvE,MAAM,YAAA,GAAmC,CAAC,KAAA,EAAO,QAAQ;AAGzD,MAAM,YAAA,GAAe,CAAC,SAAA,EAAW,MAAM;AAMvC,MAAM,WAAA,GAA2B,CAAC,SAAA,EAAW,MAAM;AAEnD,MAAM,iBAAA,GAAmD,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,MAAA;AACrF,MAAM,iBAAA,GAAmD,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,MAAA;AAErF,SAAS,YAAY,MAAA,EAA6C;AACvE,EAAA,OAAO,MAAA,KAAW,aAAa,MAAA,KAAW,MAAA;AAC5C;AA6DO,MAAM,aAAA,GAAgB,CAAC,OAAO;AA0E9B,SAAS,kBAAA,CAAmB,MAAc,KAAA,EAA0B;AACzE,EAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AACzB;AAEO,MAAM,uBAAA,GAA0B;;;;"}
@@ -3,8 +3,8 @@ export { A as AnimatePresence, aE as AsyncMotionValueAnimation, aF as DOMKeyfram
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
  import * as React from 'react';
5
5
  import { useState, useRef, useEffect, useContext, useMemo, useInsertionEffect, useCallback, useLayoutEffect, createContext, forwardRef } from 'react';
6
- import { u as useForceUpdate, L as LayoutGroup } from '../index39.js';
7
- export { D as DeprecatedLayoutGroupContext, n as nodeGroup } from '../index39.js';
6
+ import { u as useForceUpdate, L as LayoutGroup } from '../index37.js';
7
+ export { D as DeprecatedLayoutGroupContext, n as nodeGroup } from '../index37.js';
8
8
 
9
9
  const wrap = (min, max, v) => {
10
10
  const rangeSize = max - min;
package/dist/value.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers.js';
2
2
  import React__default from 'react';
3
- import { r as requireShim } from './index40.js';
3
+ import { r as requireShim } from './index38.js';
4
4
 
5
5
  var withSelector = {exports: {}};
6
6
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.4.0",
8
+ "version": "0.4.2",
9
9
  "type": "module",
10
10
  "sideEffects": false,
11
11
  "repository": {
@@ -224,6 +224,10 @@
224
224
  "types": "./dist/lib/selects/feature-permission/index.d.ts",
225
225
  "import": "./dist/selects/feature-permission.js"
226
226
  },
227
+ "./selects/permission-group": {
228
+ "types": "./dist/lib/selects/permission-group/index.d.ts",
229
+ "import": "./dist/selects/permission-group.js"
230
+ },
227
231
  "./selects/icon": {
228
232
  "types": "./dist/lib/selects/icon/index.d.ts",
229
233
  "import": "./dist/selects/icon.js"
package/dist/index39.js DELETED
@@ -1,84 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useRef, useState, useCallback, useContext, useMemo } from 'react';
3
- import { u as useIsomorphicLayoutEffect, f as frame, L as LayoutGroupContext } from './proxy.js';
4
-
5
- const notify = (node) => !node.isLayoutDirty && node.willUpdate(false);
6
- function nodeGroup() {
7
- const nodes = new Set();
8
- const subscriptions = new WeakMap();
9
- const dirtyAll = () => nodes.forEach(notify);
10
- return {
11
- add: (node) => {
12
- nodes.add(node);
13
- subscriptions.set(node, node.addEventListener("willUpdate", dirtyAll));
14
- },
15
- remove: (node) => {
16
- nodes.delete(node);
17
- const unsubscribe = subscriptions.get(node);
18
- if (unsubscribe) {
19
- unsubscribe();
20
- subscriptions.delete(node);
21
- }
22
- dirtyAll();
23
- },
24
- dirty: dirtyAll,
25
- };
26
- }
27
-
28
- /**
29
- * Note: Still used by components generated by old versions of Framer
30
- *
31
- * @deprecated
32
- */
33
- const DeprecatedLayoutGroupContext = createContext(null);
34
-
35
- function useIsMounted() {
36
- const isMounted = useRef(false);
37
- useIsomorphicLayoutEffect(() => {
38
- isMounted.current = true;
39
- return () => {
40
- isMounted.current = false;
41
- };
42
- }, []);
43
- return isMounted;
44
- }
45
-
46
- function useForceUpdate() {
47
- const isMounted = useIsMounted();
48
- const [forcedRenderCount, setForcedRenderCount] = useState(0);
49
- const forceRender = useCallback(() => {
50
- isMounted.current && setForcedRenderCount(forcedRenderCount + 1);
51
- }, [forcedRenderCount]);
52
- /**
53
- * Defer this to the end of the next animation frame in case there are multiple
54
- * synchronous calls.
55
- */
56
- const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);
57
- return [deferredForceRender, forcedRenderCount];
58
- }
59
-
60
- const shouldInheritGroup = (inherit) => inherit === true;
61
- const shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === "id";
62
- const LayoutGroup = ({ children, id, inherit = true }) => {
63
- const layoutGroupContext = useContext(LayoutGroupContext);
64
- const deprecatedLayoutGroupContext = useContext(DeprecatedLayoutGroupContext);
65
- const [forceRender, key] = useForceUpdate();
66
- const context = useRef(null);
67
- const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;
68
- if (context.current === null) {
69
- if (shouldInheritId(inherit) && upstreamId) {
70
- id = id ? upstreamId + "-" + id : upstreamId;
71
- }
72
- context.current = {
73
- id,
74
- group: shouldInheritGroup(inherit)
75
- ? layoutGroupContext.group || nodeGroup()
76
- : nodeGroup(),
77
- };
78
- }
79
- const memoizedContext = useMemo(() => ({ ...context.current, forceRender }), [key]);
80
- return (jsx(LayoutGroupContext.Provider, { value: memoizedContext, children: children }));
81
- };
82
-
83
- export { DeprecatedLayoutGroupContext as D, LayoutGroup as L, nodeGroup as n, useForceUpdate as u };
84
- //# sourceMappingURL=index39.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index39.js","sources":["../node_modules/.pnpm/motion-dom@12.38.0/node_modules/motion-dom/dist/es/projection/node/group.mjs","../node_modules/.pnpm/framer-motion@12.38.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs","../node_modules/.pnpm/framer-motion@12.38.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/.pnpm/framer-motion@12.38.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../node_modules/.pnpm/framer-motion@12.38.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs"],"sourcesContent":["const notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n const nodes = new Set();\n const subscriptions = new WeakMap();\n const dirtyAll = () => nodes.forEach(notify);\n return {\n add: (node) => {\n nodes.add(node);\n subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n },\n remove: (node) => {\n nodes.delete(node);\n const unsubscribe = subscriptions.get(node);\n if (unsubscribe) {\n unsubscribe();\n subscriptions.delete(node);\n }\n dirtyAll();\n },\n dirty: dirtyAll,\n };\n}\n\nexport { nodeGroup };\n//# sourceMappingURL=group.mjs.map\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Note: Still used by components generated by old versions of Framer\n *\n * @deprecated\n */\nconst DeprecatedLayoutGroupContext = createContext(null);\n\nexport { DeprecatedLayoutGroupContext };\n//# sourceMappingURL=DeprecatedLayoutGroupContext.mjs.map\n","\"use client\";\nimport { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n//# sourceMappingURL=use-is-mounted.mjs.map\n","\"use client\";\nimport { frame } from 'motion-dom';\nimport { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n//# sourceMappingURL=use-force-update.mjs.map\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, useRef, useMemo } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { DeprecatedLayoutGroupContext } from '../../context/DeprecatedLayoutGroupContext.mjs';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { nodeGroup } from 'motion-dom';\n\nconst shouldInheritGroup = (inherit) => inherit === true;\nconst shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nconst LayoutGroup = ({ children, id, inherit = true }) => {\n const layoutGroupContext = useContext(LayoutGroupContext);\n const deprecatedLayoutGroupContext = useContext(DeprecatedLayoutGroupContext);\n const [forceRender, key] = useForceUpdate();\n const context = useRef(null);\n const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n if (context.current === null) {\n if (shouldInheritId(inherit) && upstreamId) {\n id = id ? upstreamId + \"-\" + id : upstreamId;\n }\n context.current = {\n id,\n group: shouldInheritGroup(inherit)\n ? layoutGroupContext.group || nodeGroup()\n : nodeGroup(),\n };\n }\n const memoizedContext = useMemo(() => ({ ...context.current, forceRender }), [key]);\n return (jsx(LayoutGroupContext.Provider, { value: memoizedContext, children: children }));\n};\n\nexport { LayoutGroup };\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}