@flamingo-stack/openframe-frontend-core 0.0.596-2034.5684.1 → 0.0.596-2034.5686.1

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 (132) hide show
  1. package/dist/__tests__/fixtures/meeting-booking.d.ts +21 -0
  2. package/dist/__tests__/fixtures/meeting-booking.d.ts.map +1 -1
  3. package/dist/{chunk-NE3SHUIJ.cjs → chunk-25LZZY6E.cjs} +3 -3
  4. package/dist/{chunk-NE3SHUIJ.cjs.map → chunk-25LZZY6E.cjs.map} +1 -1
  5. package/dist/{chunk-CBR4H6JJ.cjs → chunk-3IT35YDV.cjs} +53 -53
  6. package/dist/{chunk-CBR4H6JJ.cjs.map → chunk-3IT35YDV.cjs.map} +1 -1
  7. package/dist/{chunk-WTK5YZYU.js → chunk-A6YERC4N.js} +2 -2
  8. package/dist/{chunk-XNZMKCA4.js → chunk-AGKFT4FA.js} +5 -5
  9. package/dist/{chunk-QAJXIOK2.js → chunk-AYMBMVOD.js} +2 -2
  10. package/dist/{chunk-7XHONLYQ.js → chunk-BLYQD3PG.js} +2 -2
  11. package/dist/{chunk-WDOERQZK.cjs → chunk-D3Q3VYRU.cjs} +16 -16
  12. package/dist/{chunk-WDOERQZK.cjs.map → chunk-D3Q3VYRU.cjs.map} +1 -1
  13. package/dist/{chunk-DD64DQHM.cjs → chunk-E4YWJY3A.cjs} +4 -4
  14. package/dist/{chunk-DD64DQHM.cjs.map → chunk-E4YWJY3A.cjs.map} +1 -1
  15. package/dist/{chunk-E7FDTOJ6.js → chunk-FGHJ3BC7.js} +3 -3
  16. package/dist/{chunk-E6NN7MAN.js → chunk-FIQIT6HX.js} +2 -2
  17. package/dist/{chunk-J2OCCRFC.js → chunk-GZ76RASF.js} +4 -4
  18. package/dist/{chunk-BC73KAXX.cjs → chunk-HPUD7X67.cjs} +4 -4
  19. package/dist/{chunk-BC73KAXX.cjs.map → chunk-HPUD7X67.cjs.map} +1 -1
  20. package/dist/{chunk-B3446RB6.cjs → chunk-IDDGXYES.cjs} +17 -17
  21. package/dist/{chunk-B3446RB6.cjs.map → chunk-IDDGXYES.cjs.map} +1 -1
  22. package/dist/{chunk-ESHCKTES.js → chunk-J5EA7PMY.js} +4 -4
  23. package/dist/{chunk-3PUXHFC4.js → chunk-JVYNMMNE.js} +3 -3
  24. package/dist/{chunk-QT6Q6SUK.js → chunk-KOLVBEW5.js} +1 -1
  25. package/dist/{chunk-QT6Q6SUK.js.map → chunk-KOLVBEW5.js.map} +1 -1
  26. package/dist/{chunk-NBJELHZE.cjs → chunk-MN4TFBRA.cjs} +3 -3
  27. package/dist/{chunk-NBJELHZE.cjs.map → chunk-MN4TFBRA.cjs.map} +1 -1
  28. package/dist/{chunk-C2UBAAGD.cjs → chunk-N6HNK25A.cjs} +1 -1
  29. package/dist/{chunk-C2UBAAGD.cjs.map → chunk-N6HNK25A.cjs.map} +1 -1
  30. package/dist/{chunk-NTJGRZ7G.cjs → chunk-OI7RNQAS.cjs} +33 -33
  31. package/dist/{chunk-NTJGRZ7G.cjs.map → chunk-OI7RNQAS.cjs.map} +1 -1
  32. package/dist/{chunk-OKCGXXEK.js → chunk-PO4ATWE4.js} +2 -2
  33. package/dist/{chunk-X6TLDYMG.js → chunk-QNZM43HU.js} +3 -3
  34. package/dist/{chunk-6RISTRR3.cjs → chunk-QVOGALQE.cjs} +3 -3
  35. package/dist/{chunk-6RISTRR3.cjs.map → chunk-QVOGALQE.cjs.map} +1 -1
  36. package/dist/{chunk-IJ4SGRAN.js → chunk-S7LV66HD.js} +6 -6
  37. package/dist/{chunk-6X63WX5D.cjs → chunk-SLIUM3VO.cjs} +34 -34
  38. package/dist/{chunk-6X63WX5D.cjs.map → chunk-SLIUM3VO.cjs.map} +1 -1
  39. package/dist/{chunk-XTZECFMT.cjs → chunk-TDLETTI4.cjs} +10 -10
  40. package/dist/{chunk-XTZECFMT.cjs.map → chunk-TDLETTI4.cjs.map} +1 -1
  41. package/dist/{chunk-S2WP7ELW.js → chunk-TYURDSIN.js} +34 -32
  42. package/dist/chunk-TYURDSIN.js.map +1 -0
  43. package/dist/{chunk-DR4WXTKP.cjs → chunk-TZK5N6AH.cjs} +83 -81
  44. package/dist/chunk-TZK5N6AH.cjs.map +1 -0
  45. package/dist/{chunk-EM3T7YXE.js → chunk-Y6JB7X5Y.js} +2 -2
  46. package/dist/{chunk-HCHTKE6I.cjs → chunk-YP56SX7C.cjs} +3 -3
  47. package/dist/{chunk-HCHTKE6I.cjs.map → chunk-YP56SX7C.cjs.map} +1 -1
  48. package/dist/{chunk-UG43WQ2C.cjs → chunk-YQYOEGAT.cjs} +23 -23
  49. package/dist/{chunk-UG43WQ2C.cjs.map → chunk-YQYOEGAT.cjs.map} +1 -1
  50. package/dist/{chunk-YZALGXOM.js → chunk-ZVBYWM5Z.js} +2 -2
  51. package/dist/{chunk-ANGSMT5Q.cjs → chunk-ZXEYS2XP.cjs} +17 -17
  52. package/dist/{chunk-ANGSMT5Q.cjs.map → chunk-ZXEYS2XP.cjs.map} +1 -1
  53. package/dist/components/case-studies/index.cjs +9 -9
  54. package/dist/components/case-studies/index.js +3 -3
  55. package/dist/components/contact/index.cjs +4 -4
  56. package/dist/components/contact/index.js +3 -3
  57. package/dist/components/docs/index.cjs +7 -7
  58. package/dist/components/docs/index.js +6 -6
  59. package/dist/components/embeds/index.cjs +4 -4
  60. package/dist/components/embeds/index.js +3 -3
  61. package/dist/components/faq/index.cjs +4 -4
  62. package/dist/components/faq/index.js +3 -3
  63. package/dist/components/features/index.cjs +3 -3
  64. package/dist/components/features/index.js +2 -2
  65. package/dist/components/help-center-pages/index.cjs +23 -23
  66. package/dist/components/help-center-pages/index.js +14 -14
  67. package/dist/components/index.cjs +35 -33
  68. package/dist/components/index.cjs.map +1 -1
  69. package/dist/components/index.js +15 -13
  70. package/dist/components/index.js.map +1 -1
  71. package/dist/components/meeting-scheduler/booking-form.d.ts +15 -3
  72. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  73. package/dist/components/meeting-scheduler/index.cjs +81 -89
  74. package/dist/components/meeting-scheduler/index.cjs.map +1 -1
  75. package/dist/components/meeting-scheduler/index.d.ts +2 -0
  76. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  77. package/dist/components/meeting-scheduler/index.js +56 -64
  78. package/dist/components/meeting-scheduler/index.js.map +1 -1
  79. package/dist/components/navigation/index.cjs +6 -6
  80. package/dist/components/navigation/index.js +5 -5
  81. package/dist/components/onboarding-guides/index.cjs +6 -6
  82. package/dist/components/onboarding-guides/index.js +5 -5
  83. package/dist/components/tickets/index.cjs +7 -7
  84. package/dist/components/tickets/index.js +6 -6
  85. package/dist/components/ui/benefit-card.d.ts +7 -0
  86. package/dist/components/ui/benefit-card.d.ts.map +1 -1
  87. package/dist/components/ui/field-wrapper.d.ts +4 -4
  88. package/dist/components/ui/file-manager/index.cjs +4 -4
  89. package/dist/components/ui/file-manager/index.js +1 -1
  90. package/dist/components/ui/index.cjs +5 -3
  91. package/dist/components/ui/index.cjs.map +1 -1
  92. package/dist/components/ui/index.js +4 -2
  93. package/dist/index.cjs +9 -7
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.js +8 -6
  96. package/dist/index.js.map +1 -1
  97. package/dist/schemas/meeting-booking-schema.cjs.map +1 -1
  98. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  99. package/dist/schemas/meeting-booking-schema.js.map +1 -1
  100. package/dist/utils/hubspot-meetings-convention.d.ts +1 -1
  101. package/dist/utils/hubspot-meetings-convention.d.ts.map +1 -1
  102. package/dist/utils/index.cjs.map +1 -1
  103. package/dist/utils/index.js.map +1 -1
  104. package/package.json +1 -1
  105. package/src/__tests__/benefit-card-border.test.ts +29 -0
  106. package/src/__tests__/booking-form-field-rows.test.tsx +9 -47
  107. package/src/__tests__/booking-form-number-field.test.tsx +14 -44
  108. package/src/__tests__/fixtures/meeting-booking.tsx +61 -0
  109. package/src/__tests__/meeting-scheduler-details-first.test.tsx +3 -6
  110. package/src/components/meeting-scheduler/booking-form.tsx +96 -70
  111. package/src/components/meeting-scheduler/index.tsx +24 -14
  112. package/src/components/ui/benefit-card.tsx +45 -39
  113. package/src/components/ui/field-wrapper.tsx +4 -4
  114. package/src/schemas/meeting-booking-schema.ts +1 -0
  115. package/src/utils/hubspot-meetings-convention.ts +1 -1
  116. package/dist/chunk-DR4WXTKP.cjs.map +0 -1
  117. package/dist/chunk-S2WP7ELW.js.map +0 -1
  118. package/src/__tests__/fixtures/meeting-booking.ts +0 -27
  119. /package/dist/{chunk-WTK5YZYU.js.map → chunk-A6YERC4N.js.map} +0 -0
  120. /package/dist/{chunk-XNZMKCA4.js.map → chunk-AGKFT4FA.js.map} +0 -0
  121. /package/dist/{chunk-QAJXIOK2.js.map → chunk-AYMBMVOD.js.map} +0 -0
  122. /package/dist/{chunk-7XHONLYQ.js.map → chunk-BLYQD3PG.js.map} +0 -0
  123. /package/dist/{chunk-E7FDTOJ6.js.map → chunk-FGHJ3BC7.js.map} +0 -0
  124. /package/dist/{chunk-E6NN7MAN.js.map → chunk-FIQIT6HX.js.map} +0 -0
  125. /package/dist/{chunk-J2OCCRFC.js.map → chunk-GZ76RASF.js.map} +0 -0
  126. /package/dist/{chunk-ESHCKTES.js.map → chunk-J5EA7PMY.js.map} +0 -0
  127. /package/dist/{chunk-3PUXHFC4.js.map → chunk-JVYNMMNE.js.map} +0 -0
  128. /package/dist/{chunk-OKCGXXEK.js.map → chunk-PO4ATWE4.js.map} +0 -0
  129. /package/dist/{chunk-X6TLDYMG.js.map → chunk-QNZM43HU.js.map} +0 -0
  130. /package/dist/{chunk-IJ4SGRAN.js.map → chunk-S7LV66HD.js.map} +0 -0
  131. /package/dist/{chunk-EM3T7YXE.js.map → chunk-Y6JB7X5Y.js.map} +0 -0
  132. /package/dist/{chunk-YZALGXOM.js.map → chunk-ZVBYWM5Z.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-C2UBAAGD.cjs","../src/components/ui/required-mark.tsx","../src/components/ui/field-wrapper.tsx","../src/components/ui/input.tsx","../src/components/ui/checkbox.tsx"],"names":["jsx","forwardRef","jsxs"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-C2UBAAGD.cjs","sourcesContent":[null,"/**\n * The design system's required-field mark: an accent asterisk after the label.\n * `aria-hidden` on purpose — the CONTROL carries `required`/`aria-required` for\n * assistive tech; the star is only the visual. ONE owner, used by `Field`,\n * `FieldWrapper` and every form that marks its own labels.\n */\nexport function RequiredMark() {\n return (\n <span aria-hidden className=\"text-ods-accent\">\n *\n </span>\n );\n}\n","'use client';\n\nimport { type ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Label } from './label';\nimport { RequiredMark } from './required-mark';\n\nexport interface FieldWrapperProps {\n /** Label text displayed above the field */\n label?: string;\n /**\n * `id` of the control the label names. Without it the label is decoration:\n * clicking it focuses nothing and assistive tech reads the field unnamed,\n * which is why every caller that cared was rendering its own <Label> instead\n * of using `label` here.\n */\n htmlFor?: string;\n /**\n * Status message displayed below the field, on ONE line, ellipsized on\n * overflow (full text via the native `title`).\n *\n * It is positioned OUT OF FLOW (absolute, hanging below the wrapper), so it\n * never changes the field's height when it appears — the same treatment\n * `CheckboxBlock` uses. The trade is that it overlaps whatever sits directly\n * below: a form stacking fields needs at least ~20px of vertical gap (e.g.\n * `gap-[var(--spacing-system-lf)]`) for the message to land in clear space.\n */\n error?: string;\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey) */\n errorVariant?: 'error' | 'warning' | 'success' | 'muted';\n /**\n * Label scale. Default is the standard form-label scale (text-h6).\n * 'large' (text-h4) is for screens whose design specifies body-scale field\n * titles (e.g. the devices New Device page) — opt in per call site, the\n * default stays the converged small scale.\n */\n labelVariant?: 'default' | 'large';\n /**\n * Marks the label with the `RequiredMark` `ContactForm` draws on its\n * required fields, so a form\n * mixing both never shows two conventions. Visual only — the CONTROL carries\n * `required`/`aria-required` for assistive tech; the star is `aria-hidden`.\n */\n required?: boolean;\n /** Additional className for the outer wrapper */\n className?: string;\n children: ReactNode;\n}\n\nconst errorVariantClasses = {\n error: 'text-ods-error',\n warning: 'text-ods-warning',\n success: 'text-ods-success',\n muted: 'text-ods-text-secondary',\n} as const;\n\nconst FieldWrapper = forwardRef<HTMLDivElement, FieldWrapperProps>(\n (\n { label, htmlFor, error, errorVariant = 'error', labelVariant = 'default', required = false, className, children },\n ref,\n ) => {\n const hasChrome = label != null || error != null;\n\n return (\n <div ref={ref} className={cn(hasChrome ? 'relative flex w-full flex-col' : 'contents', className)}>\n {label && (\n // Default is text-h6, NOT text-h4: `Field` (ui/field.tsx) renders its label via\n // `Label variant=\"small\"` = text-h6, and every form that mixes\n // Field-wrapped controls with `label=`-prop controls showed two label\n // sizes side by side — the exact inconsistency the admin editors kept\n // reporting. One label scale, owned here and in Field together.\n <Label className=\"mb-1\" htmlFor={htmlFor} variant={labelVariant}>\n {label}\n {required && <RequiredMark />}\n </Label>\n )}\n {children}\n {error && (\n <p\n className={cn(\n 'absolute bottom-0 left-0 right-0 translate-y-full truncate text-h6',\n errorVariantClasses[errorVariant],\n )}\n title={error}\n >\n {error}\n </p>\n )}\n </div>\n );\n },\n);\nFieldWrapper.displayName = 'FieldWrapper';\n\nexport { FieldWrapper };\n","'use client';\n\nimport { Loader2 } from 'lucide-react';\nimport { type InputHTMLAttributes, type ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { FieldWrapper } from './field-wrapper';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** When true, renders error border & ring */\n invalid?: boolean;\n /** Element displayed at the start (left) of the input */\n startAdornment?: ReactNode;\n /** Element displayed at the end (right) of the input */\n endAdornment?: ReactNode;\n /** Label text displayed above the input */\n label?: string;\n /** Label scale forwarded to FieldWrapper ('large' = text-h4 for designs with body-scale field titles) */\n labelVariant?: 'default' | 'large';\n /** Status message displayed below the input */\n error?: string;\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey).\n Only \"error\" and \"warning\" mark the field invalid (colored border). */\n errorVariant?: 'error' | 'warning' | 'success' | 'muted';\n /** When true, shows a loading spinner as end adornment */\n loading?: boolean;\n}\n\nconst invalidBorderClasses = {\n error: 'border-ods-error hover:border-ods-error has-[:focus]:border-ods-error',\n warning: '!border-ods-warning hover:!border-ods-warning has-[:focus]:!border-ods-warning',\n} as const;\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n invalid = false,\n startAdornment,\n endAdornment,\n label,\n labelVariant,\n error,\n errorVariant = 'error',\n loading = false,\n ...props\n },\n ref,\n ) => {\n // success/muted are informational — they never paint the invalid border\n const variantIsInvalid = errorVariant === 'error' || errorVariant === 'warning';\n const isInvalid = invalid || (!!error && variantIsInvalid);\n\n // Range inputs get a clean slider rendering — no label wrapper, borders, or adornments\n if (type === 'range') {\n const rangeInput = (\n <input\n type=\"range\"\n className={cn(\n 'h-1 w-full cursor-pointer appearance-none rounded-full bg-white/30',\n // Webkit (Chrome/Safari) thumb\n '[&::-webkit-slider-thumb]:appearance-none',\n '[&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:w-3',\n '[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white',\n '[&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:shadow-sm',\n // Firefox thumb\n '[&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:w-3',\n '[&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white',\n '[&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-0',\n // Firefox track\n '[&::-moz-range-track]:bg-transparent',\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n return label ? (\n <FieldWrapper label={label} labelVariant={labelVariant} error={error} errorVariant={errorVariant}>\n {rangeInput}\n </FieldWrapper>\n ) : (\n rangeInput\n );\n }\n\n const content = (\n <label\n data-invalid={isInvalid || undefined}\n className={cn(\n // Layout & spacing\n 'flex h-11 w-full cursor-text items-center gap-2 rounded-[6px] border px-3 md:h-12',\n // Focus-within states\n 'has-[:focus-visible]:outline-none',\n 'group',\n // Animations & touch UX\n 'transition-colors duration-200',\n // Theme palette\n 'border-ods-border bg-ods-card has-[:focus]:border-ods-accent',\n // Hover & active (not disabled)\n !props.disabled &&\n 'hover:border-ods-border-hover hover:bg-ods-bg-hover active:border-ods-border-active active:bg-ods-bg-active',\n // Disabled. The adornments (and any icon inside them) carry their own\n // `text-ods-text-secondary`, so grey them from here — a disabled field\n // must read as one flat colour, not grey text next to a live icon.\n // Scoped to the DIRECT span children (the two adornment wrappers): a\n // descendant rule would also repaint whatever the caller renders INSIDE\n // an adornment, which is passed verbatim precisely so it can own its\n // colour (a `Tag` there went invisible against its own fill).\n props.disabled && '!cursor-not-allowed bg-ods-bg',\n 'has-[:disabled]:[&>span]:text-ods-text-disabled has-[:disabled]:[&_svg]:text-ods-text-disabled',\n // Invalid\n isInvalid && invalidBorderClasses[variantIsInvalid ? errorVariant : 'error'],\n className,\n )}\n >\n {startAdornment && (\n <span className=\"flex-shrink-0 text-ods-text-secondary transition-colors duration-200 text-h6 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {startAdornment}\n </span>\n )}\n <input\n type={type}\n className={cn(\n // Layout\n 'min-w-0 flex-1 border-none bg-transparent outline-none',\n // Typography\n 'text-h4',\n // Colors\n 'text-ods-text-primary placeholder:text-ods-text-secondary',\n // File input adjustments\n 'file:border-0 file:bg-transparent',\n // Disabled\n 'disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border',\n // Touch\n 'touch-manipulation',\n // Autofill override\n '[&:-webkit-autofill]:[-webkit-box-shadow:0_0_0_9999px_transparent_inset] [&:-webkit-autofill]:[-webkit-text-fill-color:var(--color-text-primary)] [&:-webkit-autofill]:[caret-color:var(--color-text-primary)] [&:-webkit-autofill]:[transition:background-color_9999s_ease-in-out_0s]',\n )}\n ref={ref}\n {...props}\n />\n {loading && <Loader2 className=\"size-4 flex-shrink-0 animate-spin text-ods-text-secondary md:size-6\" />}\n {!loading && endAdornment && (\n <span className=\"flex-shrink-0 text-ods-text-secondary transition-colors duration-200 text-h6 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {endAdornment}\n </span>\n )}\n </label>\n );\n\n return (\n <FieldWrapper label={label} labelVariant={labelVariant} error={error} errorVariant={errorVariant}>\n {content}\n </FieldWrapper>\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n","'use client';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { CheckboxCheckmarkIcon } from '../icons-v2-generated/signs-and-symbols/checkbox-checkmark-icon';\n\nconst Checkbox = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-ods-border bg-ods-card focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-ods-accent data-[state=checked]:bg-ods-accent',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-ods-text-on-accent')}>\n <CheckboxCheckmarkIcon size={10} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-N6HNK25A.cjs","../src/components/ui/required-mark.tsx","../src/components/ui/field-wrapper.tsx","../src/components/ui/input.tsx","../src/components/ui/checkbox.tsx"],"names":["jsx","forwardRef","jsxs"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-N6HNK25A.cjs","sourcesContent":[null,"/**\n * The design system's required-field mark: an accent asterisk after the label.\n * `aria-hidden` on purpose — the CONTROL carries `required`/`aria-required` for\n * assistive tech; the star is only the visual. ONE owner, used by `Field`,\n * `FieldWrapper` and every form that marks its own labels.\n */\nexport function RequiredMark() {\n return (\n <span aria-hidden className=\"text-ods-accent\">\n *\n </span>\n );\n}\n","'use client';\n\nimport { type ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Label } from './label';\nimport { RequiredMark } from './required-mark';\n\nexport interface FieldWrapperProps {\n /** Label text displayed above the field */\n label?: string;\n /**\n * `id` of the control the label names. Without it the label is decoration:\n * clicking it focuses nothing and assistive tech reads the field unnamed,\n * which is why every caller that cared was rendering its own <Label> instead\n * of using `label` here.\n */\n htmlFor?: string;\n /**\n * Status message displayed below the field, on ONE line, ellipsized on\n * overflow (full text via the native `title`).\n *\n * It is positioned OUT OF FLOW (absolute, hanging below the wrapper), so it\n * never changes the field's height when it appears — the same treatment\n * `CheckboxBlock` uses. The trade is that it overlaps whatever sits directly\n * below: a form stacking fields needs at least ~20px of vertical gap (e.g.\n * `gap-[var(--spacing-system-lf)]`) for the message to land in clear space.\n */\n error?: string;\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey) */\n errorVariant?: 'error' | 'warning' | 'success' | 'muted';\n /**\n * Label scale. Default is the standard form-label scale (text-h6).\n * 'large' (text-h4) is for screens whose design specifies body-scale field\n * titles (e.g. the devices New Device page) — opt in per call site, the\n * default stays the converged small scale.\n */\n labelVariant?: 'default' | 'large';\n /**\n * Marks the label with the `RequiredMark` `ContactForm` draws on its required\n * fields, so a form mixing both never shows two conventions. Visual only — the\n * CONTROL carries `required`/`aria-required` for assistive tech; the star is\n * `aria-hidden`.\n */\n required?: boolean;\n /** Additional className for the outer wrapper */\n className?: string;\n children: ReactNode;\n}\n\nconst errorVariantClasses = {\n error: 'text-ods-error',\n warning: 'text-ods-warning',\n success: 'text-ods-success',\n muted: 'text-ods-text-secondary',\n} as const;\n\nconst FieldWrapper = forwardRef<HTMLDivElement, FieldWrapperProps>(\n (\n { label, htmlFor, error, errorVariant = 'error', labelVariant = 'default', required = false, className, children },\n ref,\n ) => {\n const hasChrome = label != null || error != null;\n\n return (\n <div ref={ref} className={cn(hasChrome ? 'relative flex w-full flex-col' : 'contents', className)}>\n {label && (\n // Default is text-h6, NOT text-h4: `Field` (ui/field.tsx) renders its label via\n // `Label variant=\"small\"` = text-h6, and every form that mixes\n // Field-wrapped controls with `label=`-prop controls showed two label\n // sizes side by side — the exact inconsistency the admin editors kept\n // reporting. One label scale, owned here and in Field together.\n <Label className=\"mb-1\" htmlFor={htmlFor} variant={labelVariant}>\n {label}\n {required && <RequiredMark />}\n </Label>\n )}\n {children}\n {error && (\n <p\n className={cn(\n 'absolute bottom-0 left-0 right-0 translate-y-full truncate text-h6',\n errorVariantClasses[errorVariant],\n )}\n title={error}\n >\n {error}\n </p>\n )}\n </div>\n );\n },\n);\nFieldWrapper.displayName = 'FieldWrapper';\n\nexport { FieldWrapper };\n","'use client';\n\nimport { Loader2 } from 'lucide-react';\nimport { type InputHTMLAttributes, type ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { FieldWrapper } from './field-wrapper';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** When true, renders error border & ring */\n invalid?: boolean;\n /** Element displayed at the start (left) of the input */\n startAdornment?: ReactNode;\n /** Element displayed at the end (right) of the input */\n endAdornment?: ReactNode;\n /** Label text displayed above the input */\n label?: string;\n /** Label scale forwarded to FieldWrapper ('large' = text-h4 for designs with body-scale field titles) */\n labelVariant?: 'default' | 'large';\n /** Status message displayed below the input */\n error?: string;\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey).\n Only \"error\" and \"warning\" mark the field invalid (colored border). */\n errorVariant?: 'error' | 'warning' | 'success' | 'muted';\n /** When true, shows a loading spinner as end adornment */\n loading?: boolean;\n}\n\nconst invalidBorderClasses = {\n error: 'border-ods-error hover:border-ods-error has-[:focus]:border-ods-error',\n warning: '!border-ods-warning hover:!border-ods-warning has-[:focus]:!border-ods-warning',\n} as const;\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n type,\n invalid = false,\n startAdornment,\n endAdornment,\n label,\n labelVariant,\n error,\n errorVariant = 'error',\n loading = false,\n ...props\n },\n ref,\n ) => {\n // success/muted are informational — they never paint the invalid border\n const variantIsInvalid = errorVariant === 'error' || errorVariant === 'warning';\n const isInvalid = invalid || (!!error && variantIsInvalid);\n\n // Range inputs get a clean slider rendering — no label wrapper, borders, or adornments\n if (type === 'range') {\n const rangeInput = (\n <input\n type=\"range\"\n className={cn(\n 'h-1 w-full cursor-pointer appearance-none rounded-full bg-white/30',\n // Webkit (Chrome/Safari) thumb\n '[&::-webkit-slider-thumb]:appearance-none',\n '[&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:w-3',\n '[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white',\n '[&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:shadow-sm',\n // Firefox thumb\n '[&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:w-3',\n '[&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white',\n '[&::-moz-range-thumb]:cursor-pointer [&::-moz-range-thumb]:border-0',\n // Firefox track\n '[&::-moz-range-track]:bg-transparent',\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n return label ? (\n <FieldWrapper label={label} labelVariant={labelVariant} error={error} errorVariant={errorVariant}>\n {rangeInput}\n </FieldWrapper>\n ) : (\n rangeInput\n );\n }\n\n const content = (\n <label\n data-invalid={isInvalid || undefined}\n className={cn(\n // Layout & spacing\n 'flex h-11 w-full cursor-text items-center gap-2 rounded-[6px] border px-3 md:h-12',\n // Focus-within states\n 'has-[:focus-visible]:outline-none',\n 'group',\n // Animations & touch UX\n 'transition-colors duration-200',\n // Theme palette\n 'border-ods-border bg-ods-card has-[:focus]:border-ods-accent',\n // Hover & active (not disabled)\n !props.disabled &&\n 'hover:border-ods-border-hover hover:bg-ods-bg-hover active:border-ods-border-active active:bg-ods-bg-active',\n // Disabled. The adornments (and any icon inside them) carry their own\n // `text-ods-text-secondary`, so grey them from here — a disabled field\n // must read as one flat colour, not grey text next to a live icon.\n // Scoped to the DIRECT span children (the two adornment wrappers): a\n // descendant rule would also repaint whatever the caller renders INSIDE\n // an adornment, which is passed verbatim precisely so it can own its\n // colour (a `Tag` there went invisible against its own fill).\n props.disabled && '!cursor-not-allowed bg-ods-bg',\n 'has-[:disabled]:[&>span]:text-ods-text-disabled has-[:disabled]:[&_svg]:text-ods-text-disabled',\n // Invalid\n isInvalid && invalidBorderClasses[variantIsInvalid ? errorVariant : 'error'],\n className,\n )}\n >\n {startAdornment && (\n <span className=\"flex-shrink-0 text-ods-text-secondary transition-colors duration-200 text-h6 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {startAdornment}\n </span>\n )}\n <input\n type={type}\n className={cn(\n // Layout\n 'min-w-0 flex-1 border-none bg-transparent outline-none',\n // Typography\n 'text-h4',\n // Colors\n 'text-ods-text-primary placeholder:text-ods-text-secondary',\n // File input adjustments\n 'file:border-0 file:bg-transparent',\n // Disabled\n 'disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border',\n // Touch\n 'touch-manipulation',\n // Autofill override\n '[&:-webkit-autofill]:[-webkit-box-shadow:0_0_0_9999px_transparent_inset] [&:-webkit-autofill]:[-webkit-text-fill-color:var(--color-text-primary)] [&:-webkit-autofill]:[caret-color:var(--color-text-primary)] [&:-webkit-autofill]:[transition:background-color_9999s_ease-in-out_0s]',\n )}\n ref={ref}\n {...props}\n />\n {loading && <Loader2 className=\"size-4 flex-shrink-0 animate-spin text-ods-text-secondary md:size-6\" />}\n {!loading && endAdornment && (\n <span className=\"flex-shrink-0 text-ods-text-secondary transition-colors duration-200 text-h6 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {endAdornment}\n </span>\n )}\n </label>\n );\n\n return (\n <FieldWrapper label={label} labelVariant={labelVariant} error={error} errorVariant={errorVariant}>\n {content}\n </FieldWrapper>\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n","'use client';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { CheckboxCheckmarkIcon } from '../icons-v2-generated/signs-and-symbols/checkbox-checkmark-icon';\n\nconst Checkbox = forwardRef<\n ElementRef<typeof CheckboxPrimitive.Root>,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-ods-border bg-ods-card focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-ods-accent data-[state=checked]:bg-ods-accent',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-ods-text-on-accent')}>\n <CheckboxCheckmarkIcon size={10} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"]}
@@ -3,16 +3,16 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkBC73KAXXcjs = require('./chunk-BC73KAXX.cjs');
6
+ var _chunkHPUD7X67cjs = require('./chunk-HPUD7X67.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunkHCHTKE6Icjs = require('./chunk-HCHTKE6I.cjs');
11
+ var _chunkYP56SX7Ccjs = require('./chunk-YP56SX7C.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkNBJELHZEcjs = require('./chunk-NBJELHZE.cjs');
15
+ var _chunkMN4TFBRAcjs = require('./chunk-MN4TFBRA.cjs');
16
16
 
17
17
 
18
18
 
@@ -22,7 +22,7 @@ var _chunkNBJELHZEcjs = require('./chunk-NBJELHZE.cjs');
22
22
 
23
23
 
24
24
 
25
- var _chunkDR4WXTKPcjs = require('./chunk-DR4WXTKP.cjs');
25
+ var _chunkTZK5N6AHcjs = require('./chunk-TZK5N6AH.cjs');
26
26
 
27
27
 
28
28
  var _chunkH64ZHSYRcjs = require('./chunk-H64ZHSYR.cjs');
@@ -324,8 +324,8 @@ function toDocContent(value, requestedPath) {
324
324
  }
325
325
  function useDocumentTree(config, initialPath) {
326
326
  const { structureEndpoint, contentEndpoint, baseRoute } = config;
327
- const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkDR4WXTKPcjs.DEFAULT_FOLDER_INDEX_FILE));
328
- const cleanInitialPath = _chunkDR4WXTKPcjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
327
+ const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkTZK5N6AHcjs.DEFAULT_FOLDER_INDEX_FILE));
328
+ const cleanInitialPath = _chunkTZK5N6AHcjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
329
329
  const [structure, setStructure] = _react.useState.call(void 0, []);
330
330
  const [selectedPath, setSelectedPath] = _react.useState.call(void 0, cleanInitialPath);
331
331
  const [content, setContent] = _react.useState.call(void 0, null);
@@ -349,12 +349,12 @@ function useDocumentTree(config, initialPath) {
349
349
  } else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
350
350
  pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
351
351
  }
352
- pathFromUrl = _chunkDR4WXTKPcjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
352
+ pathFromUrl = _chunkTZK5N6AHcjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
353
353
  if (pathFromUrl !== selectedPathRef.current) {
354
354
  setSelectedPath(pathFromUrl);
355
355
  if (pathFromUrl) {
356
356
  const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
357
- setExpandedNodes(new Set(_chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
357
+ setExpandedNodes(new Set(_chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
358
358
  }
359
359
  setTimeout(() => {
360
360
  scrollToContent();
@@ -372,7 +372,7 @@ function useDocumentTree(config, initialPath) {
372
372
  setSelectedPath(cleanInitialPath);
373
373
  if (cleanInitialPath) {
374
374
  const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
375
- setExpandedNodes(new Set(_chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
375
+ setExpandedNodes(new Set(_chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
376
376
  }
377
377
  setExternalNavCount((n) => n + 1);
378
378
  }
@@ -397,7 +397,7 @@ function useDocumentTree(config, initialPath) {
397
397
  if (cleanInitialPath) {
398
398
  const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
399
399
  if (pathForExpansion) {
400
- setExpandedNodes(new Set(_chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
400
+ setExpandedNodes(new Set(_chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
401
401
  }
402
402
  } else if (nodes.length > 0) {
403
403
  const hasRootReadme = nodes.some((node) => node.type === "file" && node.path === folderIndexFile);
@@ -437,7 +437,7 @@ function useDocumentTree(config, initialPath) {
437
437
  setContent(null);
438
438
  return;
439
439
  }
440
- const probe = _chunkDR4WXTKPcjs.findDocNodeByPath.call(void 0, _chunkDR4WXTKPcjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
440
+ const probe = _chunkTZK5N6AHcjs.findDocNodeByPath.call(void 0, _chunkTZK5N6AHcjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
441
441
  const probeIsNoReadmeFolder = !!probe && probe.type === "folder" && !probe.hasReadme;
442
442
  const preStructureFolderLike = structure.length === 0 && !path.endsWith(".md");
443
443
  if (probeIsNoReadmeFolder || preStructureFolderLike) {
@@ -494,7 +494,7 @@ function useDocumentTree(config, initialPath) {
494
494
  if (selectedPath === "") {
495
495
  pathToFetch = folderIndexFile;
496
496
  } else {
497
- const node = _chunkDR4WXTKPcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
497
+ const node = _chunkTZK5N6AHcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
498
498
  if (node && node.type === "folder" && !node.hasReadme) {
499
499
  const firstDocPath = findFirstDocPath(node);
500
500
  if (!firstDocPath) {
@@ -535,16 +535,16 @@ function useDocumentTree(config, initialPath) {
535
535
  if (node.type === "folder") {
536
536
  setExpandedNodes((prev) => {
537
537
  if (prev.has(node.id)) {
538
- const ancestorIds = _chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, node.path);
538
+ const ancestorIds = _chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, node.path);
539
539
  ancestorIds.pop();
540
540
  return new Set(ancestorIds);
541
541
  }
542
- return new Set(_chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, node.path));
542
+ return new Set(_chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, node.path));
543
543
  });
544
544
  } else {
545
545
  const lastSlash = node.path.lastIndexOf("/");
546
546
  if (lastSlash > 0) {
547
- setExpandedNodes(new Set(_chunkDR4WXTKPcjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
547
+ setExpandedNodes(new Set(_chunkTZK5N6AHcjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
548
548
  }
549
549
  }
550
550
  lastFetchedPath.current = null;
@@ -559,7 +559,7 @@ function useDocumentTree(config, initialPath) {
559
559
  const hashIndex = path.indexOf("#");
560
560
  const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
561
561
  const cleanPath = path.replace(/\/$/, "").split("#")[0];
562
- const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkDR4WXTKPcjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
562
+ const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkTZK5N6AHcjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
563
563
  if (anchor && _optionalChain([options, 'optionalAccess', _7 => _7.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
564
564
  _chunkYXWGSDK4cjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkYXWGSDK4cjs.HUB_HEADER_OFFSET_PX });
565
565
  return;
@@ -623,15 +623,15 @@ function useDocumentTree(config, initialPath) {
623
623
  return docNavigation.register({
624
624
  baseRoute: normalizedBaseRoute,
625
625
  findNodeByPath: (path) => {
626
- const clean = _chunkDR4WXTKPcjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
627
- return _nullishCoalesce(_chunkDR4WXTKPcjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
626
+ const clean = _chunkTZK5N6AHcjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
627
+ return _nullishCoalesce(_chunkTZK5N6AHcjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
628
628
  },
629
629
  selectNode
630
630
  });
631
631
  }, [docNavigation, normalizedBaseRoute, structure, selectNode, folderIndexFile]);
632
632
  const isEmptyFolder = _react.useMemo.call(void 0, () => {
633
633
  if (!selectedPath || structure.length === 0) return false;
634
- const node = _chunkDR4WXTKPcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
634
+ const node = _chunkTZK5N6AHcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
635
635
  return !!node && node.type === "folder" && !node.hasReadme && !findFirstDocPath(node);
636
636
  }, [selectedPath, structure]);
637
637
  return {
@@ -767,7 +767,7 @@ function DocViewerContent({
767
767
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _16 => _16.label]), () => ( "Back to home")),
768
768
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _17 => _17.href]), () => ( "/")))
769
769
  };
770
- const docSearch = _chunkNBJELHZEcjs.useDocSearch.call(void 0, {
770
+ const docSearch = _chunkMN4TFBRAcjs.useDocSearch.call(void 0, {
771
771
  source: chatSource,
772
772
  baseRoute,
773
773
  searchEndpoint,
@@ -791,7 +791,7 @@ function DocViewerContent({
791
791
  onResolveLink: resolveLink
792
792
  });
793
793
  }, [content, renderContent, navigateToDoc, sourceId, resolveLink]);
794
- const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkDR4WXTKPcjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _18 => _18.documentType]) : void 0;
794
+ const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkTZK5N6AHcjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _18 => _18.documentType]) : void 0;
795
795
  const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _19 => _19.documentType]), () => ( selectedNodeDocType));
796
796
  const isMarkdownContent = !activeDocType || activeDocType === "markdown";
797
797
  const showStickyNav = isMarkdownContent;
@@ -802,9 +802,9 @@ function DocViewerContent({
802
802
  const containerBgStyle = colorPalette.containerBackground !== "transparent" ? { backgroundColor: colorPalette.containerBackground } : {};
803
803
  const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
804
804
  const resolvedEmptyText = emptyStateText || defaultEmptyText;
805
- const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDR4WXTKPcjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
805
+ const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTZK5N6AHcjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
806
806
  showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
807
- _chunkNBJELHZEcjs.DocSearchBar,
807
+ _chunkMN4TFBRAcjs.DocSearchBar,
808
808
  {
809
809
  placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _23 => _23.toLowerCase, 'call', _24 => _24()]) || "documents"}...`,
810
810
  query: docSearch.query,
@@ -823,9 +823,9 @@ function DocViewerContent({
823
823
  ] })
824
824
  ] }) }),
825
825
  !error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 lg:flex-row lg:gap-10", children: [
826
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full lg:w-[320px] lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "lg:sticky lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDR4WXTKPcjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
826
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full lg:w-[320px] lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "lg:sticky lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTZK5N6AHcjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
827
827
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
828
- _chunkHCHTKE6Icjs.MobileNavigationDropdown,
828
+ _chunkYP56SX7Ccjs.MobileNavigationDropdown,
829
829
  {
830
830
  nodes: structure,
831
831
  selectedPath,
@@ -839,7 +839,7 @@ function DocViewerContent({
839
839
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentSidebar, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
840
840
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: sidebarLabel }),
841
841
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
842
- _chunkHCHTKE6Icjs.MultiLevelNavigation,
842
+ _chunkYP56SX7Ccjs.MultiLevelNavigation,
843
843
  {
844
844
  nodes: structure,
845
845
  selectedPath,
@@ -878,7 +878,7 @@ function DocViewerContent({
878
878
  showStickyNav && content && stickyNavSections.length > 0 && !isLoadingContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
879
879
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "mb-4 font-semibold text-ods-text-secondary text-h5", children: "ON THIS PAGE" }),
880
880
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
881
- _chunkHCHTKE6Icjs.StickySectionNav,
881
+ _chunkYP56SX7Ccjs.StickySectionNav,
882
882
  {
883
883
  sections: stickyNavSections,
884
884
  activeSection,
@@ -893,7 +893,7 @@ function DocViewerContent({
893
893
  ) })
894
894
  ] })
895
895
  ] }) }) });
896
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDR4WXTKPcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
896
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTZK5N6AHcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
897
897
  }
898
898
 
899
899
  // src/components/docs/skeletons.tsx
@@ -983,11 +983,11 @@ function EmbedSkeleton({ documentType } = {}) {
983
983
 
984
984
  var DEFAULT_TITLE = "Documents";
985
985
  var defaultFallbackRenderer = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "py-16 text-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: "Unsupported document type" }) });
986
- var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBC73KAXXcjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
987
- var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBC73KAXXcjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
988
- var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDR4WXTKPcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
986
+ var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHPUD7X67cjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
987
+ var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHPUD7X67cjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
988
+ var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTZK5N6AHcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
989
989
  var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
990
- _chunkBC73KAXXcjs.FileDownloadCard,
990
+ _chunkHPUD7X67cjs.FileDownloadCard,
991
991
  {
992
992
  fileName: content.fileName,
993
993
  mimeType: content.mimeType,
@@ -1050,4 +1050,4 @@ function DocsHubPage({
1050
1050
 
1051
1051
 
1052
1052
  exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.DocNavigationProvider = DocNavigationProvider; exports.useDocNavigation = useDocNavigation; exports.useDocumentTree = useDocumentTree; exports.useScrollSpy = useScrollSpy; exports.DocViewer = DocViewer; exports.MarkdownSkeleton = MarkdownSkeleton; exports.EmbedSkeleton = EmbedSkeleton; exports.DocsHubPage = DocsHubPage;
1053
- //# sourceMappingURL=chunk-NTJGRZ7G.cjs.map
1053
+ //# sourceMappingURL=chunk-OI7RNQAS.cjs.map